Index: src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 16535)
+++ src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(working copy)
@@ -23,6 +23,9 @@
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.FileWatcher;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.IPreferences;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ListenerList;
 import org.openstreetmap.josm.tools.Logging;
@@ -44,6 +47,23 @@
 
     private static final ListenerList<MapPaintSylesUpdateListener> listeners = ListenerList.createUnchecked();
 
+    private static final class MapPaintStylesPreferenceListener implements PreferenceChangedListener {
+        private IPreferences pref;
+        public MapPaintStylesPreferenceListener(IPreferences pref) {
+            this.pref = pref;
+        }
+
+        @Override
+        public void preferenceChanged(PreferenceChangeEvent e) {
+            if (e.getKey().contains("mappaint")) {
+                // We need to remove this from the listeners, so that we don't recursively call ourselves.
+                pref.removePreferenceChangeListener(this);
+                MapPaintStyles.readFromPreferences();
+                pref.addPreferenceChangeListener(this);
+            }
+        }
+
+    }
     static {
         listeners.addListener(new MapPaintSylesUpdateListener() {
             @Override
@@ -56,6 +76,7 @@
                 mapPaintStylesUpdated();
             }
         });
+        Config.getPref().addPreferenceChangeListener(new MapPaintStylesPreferenceListener(Config.getPref()));
     }
 
     private static ElemStyles styles = new ElemStyles();
Index: src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 16535)
+++ src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(working copy)
@@ -390,18 +390,16 @@
 
     @Override
     public boolean ok() {
-        boolean ret = false;
         for (ColorEntry d : tableModel.getDeleted()) {
             d.toProperty().remove();
         }
         for (ColorEntry e : tableModel.getData()) {
-            if (e.info.getValue() != null && e.toProperty().put(e.info.getValue())
-                    && NamedColorProperty.COLOR_CATEGORY_MAPPAINT.equals(e.info.getCategory())) {
-                ret = true;
+            if (e.info.getValue() != null) {
+                e.toProperty().put(e.info.getValue());
             }
         }
         OsmDataLayer.createHatchTexture();
-        return ret;
+        return false;
     }
 
     @Override
