Index: src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 2874)
+++ src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(working copy)
@@ -188,7 +188,15 @@
                     putError(w, tr("Area style way is not closed."), true);
                 }
             }
-            areaStyle.getLineStyle().paintPrimitive(w, paintSettings, painter, data.isSelected(w));
+
+            LineElemStyle lineStyle = new LineElemStyle((LineElemStyle) areaStyle.getLineStyle());
+
+            // inherit color if no line color is set
+            if (lineStyle.color == null) {
+                lineStyle.color = areaStyle.color;
+            }
+
+            lineStyle.paintPrimitive(w, paintSettings, painter, data.isSelected(w));
         }
     }
 
Index: src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 2874)
+++ src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(working copy)
@@ -68,6 +68,23 @@
         }
     }
 
+    public LineElemStyle(LineElemStyle s) {
+        this.width = s.width;
+        this.realWidth = s.realWidth;
+        this.color = s.color;
+        this.dashed = s.dashed;
+        this.dashedColor = s.dashedColor;
+        this.over = s.over;
+        this.widthMode = s.widthMode;
+
+        this.priority = s.priority;
+        this.maxScale = s.maxScale;
+        this.minScale = s.minScale;
+        this.rules = s.rules;
+
+        this.code = s.code;
+    }
+
     public LineElemStyle() { init(); }
 
     public void init()
