Index: src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(revision 16392)
+++ src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java	(working copy)
@@ -20,6 +20,7 @@
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
+import org.openstreetmap.josm.data.preferences.NamedColorProperty;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -603,17 +604,23 @@
      * as frequent preference lookup (using <code>Config.getPref().get()</code>) for
      * each primitive can be slow during rendering.
      *
+     * @param source style source
      * @param key preference key
      * @param def default value
      * @return the corresponding preference value
      * @see org.openstreetmap.josm.data.Preferences#get(String, String)
      */
-    public String getPreferenceCached(String key, String def) {
+    public String getPreferenceCached(StyleSource source, String key, String def) {
         String res;
         if (preferenceCache.containsKey(key)) {
             res = preferenceCache.get(key);
         } else {
-            res = Config.getPref().get(key, null);
+            Object realDef = Cascade.convertTo(def, Color.class);
+            if (realDef instanceof Color) {
+                res = "#" + Integer.toHexString(new NamedColorProperty(NamedColorProperty.COLOR_CATEGORY_MAPPAINT, source.getFileNamePart(), key, (Color) realDef).get().getRGB()).substring(2);
+            } else {
+                res = Config.getPref().get(key, null);
+            }
             preferenceCache.put(key, res);
         }
         return res != null ? res : def;
Index: src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(revision 16392)
+++ src/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.java	(working copy)
@@ -776,7 +776,7 @@
      * @return value for key, or default value if not found
      */
     public static String JOSM_pref(Environment env, String key, String def) { // NO_UCD (unused code)
-        return MapPaintStyles.getStyles().getPreferenceCached(key, def);
+        return MapPaintStyles.getStyles().getPreferenceCached(env.source, key, def);
     }
 
     /**
