Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3896)
@@ -92,5 +92,5 @@
         this.relationSelectedColor = PaintColors.RELATIONSELECTED.get();
         this.nodeColor = PaintColors.NODE.get();
-        this.backgroundColor = PaintColors.BACKGROUND.get();
+        this.backgroundColor = PaintColors.getBackgroundColor();
 
         this.orderFont = new Font(Main.pref.get("mappaint.font", "Helvetica"), Font.PLAIN, Main.pref.getInteger("mappaint.fontsize", 8));
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/PaintColors.java	(revision 3896)
@@ -5,7 +5,11 @@
 
 import java.awt.Color;
+import java.util.List;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Preferences.ColorKey;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
+import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateListener;
+import org.openstreetmap.josm.gui.mappaint.StyleSource;
 
 public enum PaintColors implements ColorKey {
@@ -30,4 +34,21 @@
     private final String name;
     private final Color defaultColor;
+
+    private static Color backgroundColorCache = null;
+
+    private static final MapPaintSylesUpdateListener styleOverrideListener = new MapPaintSylesUpdateListener() {
+
+        public void mapPaintStylesUpdated() {
+            backgroundColorCache = null;
+        }
+
+        public void mapPaintStyleEntryUpdated(int idx) {
+            mapPaintStylesUpdated();
+        }
+    };
+
+    static {
+        MapPaintStyles.addMapPaintSylesUpdateListener(styleOverrideListener);
+    }
 
     private PaintColors(String name, Color defaultColor) {
@@ -57,3 +78,22 @@
         }
     }
+
+    public static Color getBackgroundColor() {
+        if (backgroundColorCache != null)
+            return backgroundColorCache;
+        List<StyleSource> sources = MapPaintStyles.getStyles().getStyleSources();
+        for (StyleSource s : sources) {
+            if (!s.active) {
+                continue;
+            }
+            Color backgroundColorOverride = s.getBackgroundColorOverride();
+            if (backgroundColorOverride != null) {
+                backgroundColorCache = backgroundColorOverride;
+            }
+        }
+        if (backgroundColorCache == null) {
+            backgroundColorCache = BACKGROUND.get();
+        }
+        return backgroundColorCache;
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3896)
@@ -498,5 +498,5 @@
             Graphics2D g2 = nonChangedLayersBuffer.createGraphics();
             g2.setClip(g.getClip());
-            g2.setColor(PaintColors.BACKGROUND.get());
+            g2.setColor(PaintColors.getBackgroundColor());
             g2.fillRect(0, 0, getWidth(), getHeight());
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 3896)
@@ -70,4 +70,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 public class MapPaintDialog extends ToggleDialog {
@@ -601,18 +602,27 @@
         private JPanel buildInfoPanel(StyleSource s) {
             JPanel p = new JPanel(new GridBagLayout());
-            StringBuilder text = new StringBuilder("<table cellpadding=3><tr><td>");
-            text.append("<b>" + tr("Name:") + "</b></td><td>" + s.getDisplayString() + "</td></tr>");
-            text.append("<tr><td>");
+            StringBuilder text = new StringBuilder("<table cellpadding=3>");
+            text.append(tableRow(tr("Title:"), s.getDisplayString()));
             if (s.url.startsWith("http://")) {
-                text.append("<b>" + tr("URL:") + "</b></td><td>" + s.url + "</td></tr>");
+                text.append(tableRow(tr("URL:"), s.url));
             } else if (s.url.startsWith("resource://")) {
-                text.append("<b>" + tr("Built-in Style, internal path:</b>") + "</b></td><td>" + s.url + "</td></tr>");
+                text.append(tableRow(tr("Built-in Style, internal path:"), s.url));
             } else {
-                text.append("<b>" + tr("Path:") + "</b></td><td>" + s.url + "</td></tr>");
-            }
-            text.append("<tr><td><b>" + tr("Style is currently active?") + "</b></td><td>" + (s.active ? tr("Yes") : tr("No")) + "</td></tr>");
+                text.append(tableRow(tr("Path:"), s.url));
+            }
+            if (s.icon != null) {
+                text.append(tableRow(tr("Icon:"), s.icon));
+            }
+            if (s.getBackgroundColorOverride() != null) {
+                text.append(tableRow(tr("Background:"), Utils.toString(s.getBackgroundColorOverride())));
+            }
+            text.append(tableRow(tr("Style is currently active?"), s.active ? tr("Yes") : tr("No")));
             text.append("</table>");
             p.add(new JScrollPane(new HtmlPanel(text.toString())), GBC.eol().fill(GBC.BOTH));
             return p;
+        }
+
+        private String tableRow(String firstColumn, String secondColumn) {
+            return "<tr><td><b>" + firstColumn + "</b></td><td>" + secondColumn + "</td></tr>";
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 3896)
@@ -9,5 +9,4 @@
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java	(revision 3896)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.awt.Color;
 import java.io.File;
 import java.io.IOException;
@@ -99,3 +100,7 @@
                     errors.size(), errors.size());
     }
+
+    public Color getBackgroundColorOverride() {
+        return null;
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 3896)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.io.IOException;
 import java.io.InputStream;
@@ -28,4 +29,5 @@
     
     final public List<MapCSSRule> rules;
+    private Color backgroundColorOverride;
 
     public MapCSSStyleSource(String url, String name, String shortdescription) {
@@ -47,4 +49,5 @@
             parser.sheet(this);
             loadMeta();
+            loadCanvas();
         } catch(IOException e) {
             System.err.println(tr("Warning: failed to load Mappaint styles from ''{0}''. Exception was: {1}", url, e.toString()));
@@ -78,4 +81,22 @@
      */
     private void loadMeta() {
+        Cascade c = constructSpecial("meta");
+        String pTitle = c.get("title", null, String.class);
+        if (title == null) {
+            title = pTitle;
+        }
+        String pIcon = c.get("icon", null, String.class);
+        if (icon == null) {
+            icon = pIcon;
+        }
+    }
+
+    private void loadCanvas() {
+        Cascade c = constructSpecial("canvas");
+        backgroundColorOverride = c.get("background-color", null, Color.class);
+    }
+
+    private Cascade constructSpecial(String type) {
+
         MultiCascade mc = new MultiCascade();
         Node n = new Node();
@@ -88,5 +109,5 @@
         for (MapCSSRule r : rules) {
             for (Selector s : r.selectors) {
-                if (s.base.equals("meta")) {
+                if (s.base.equals(type)) {
                     for (Condition cnd : s.conds) {
                         if (!cnd.applies(env))
@@ -99,13 +120,9 @@
             }
         }
-        Cascade c = mc.getCascade("default");
-        String pTitle = c.get("title", null, String.class);
-        if (title == null) {
-            title = pTitle;
-        }
-        String pIcon = c.get("icon", null, String.class);
-        if (icon == null) {
-            icon = pIcon;
-        }
+        return mc.getCascade("default");
+    }
+
+    public Color getBackgroundColorOverride() {
+        return backgroundColorOverride;
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 3895)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 3896)
@@ -260,5 +260,4 @@
         MarkerLayer.getColor(null);
         GpxLayer.getColor(null);
-        OsmDataLayer.getBackgroundColor();
         OsmDataLayer.getOutsideColor();
         MapScaler.getColor();
