Index: trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3404)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/LineElemStyle.java	(revision 3405)
@@ -151,5 +151,4 @@
         Node lastN;
 
-        Color myColor = color;
         Color myDashedColor = dashedColor;
         int myWidth = getWidth();
@@ -177,10 +176,11 @@
         }
 
+        Color markColor = null;
         if(w.isHighlighted()) {
-            myColor = paintSettings.getHighlightColor();
+            markColor = paintSettings.getHighlightColor();
         } else if (selected) {
-            myColor = member ? paintSettings.getRelationSelectedColor() : paintSettings.getSelectedColor();
+            markColor = member ? paintSettings.getRelationSelectedColor() : paintSettings.getSelectedColor();
         } else if(w.isDisabled()) {
-            myColor = paintSettings.getInactiveColor();
+            markColor = paintSettings.getInactiveColor();
             myDashedColor = paintSettings.getInactiveColor();
         }
@@ -190,8 +190,12 @@
             for(LineElemStyle s : overlays) {
                 if(!s.over) {
-                    painter.drawWay(w, (s.color == null || selected) ? myColor: s.color, s.getWidth(myWidth),
-                            s.getDashed(),
-                            w.isDisabled() ? paintSettings.getInactiveColor() : s.dashedColor,
-                            false, false, false);
+                    painter.drawWay(w,
+                        markColor != null ?
+                            (s.color != null ? new Color(markColor.getRed(), markColor.getGreen(), markColor.getBlue(), s.color.getAlpha()) : markColor) :
+                            s.color,
+                        s.getWidth(myWidth),
+                        s.getDashed(),
+                        w.isDisabled() ? paintSettings.getInactiveColor() : s.dashedColor,
+                        false, false, false);
                 }
             }
@@ -199,5 +203,6 @@
 
         /* draw the way */
-        painter.drawWay(w, myColor, myWidth, dashed, myDashedColor, showDirection, selected ? false : reversedDirection, showOnlyHeadArrowOnly);
+        painter.drawWay(w, markColor != null ? markColor : color, myWidth, dashed, myDashedColor, showDirection,
+                    selected ? false : reversedDirection, showOnlyHeadArrowOnly);
 
         /* draw overlays above the way */
@@ -205,6 +210,12 @@
             for(LineElemStyle s : overlays) {
                 if(s.over) {
-                    painter.drawWay(w, (s.color == null || selected) ? myColor : s.color, s.getWidth(myWidth),
-                            s.getDashed(), s.dashedColor, false, false, false);
+                    painter.drawWay(w,
+                        markColor != null ?
+                            (s.color != null ? new Color(markColor.getRed(), markColor.getGreen(), markColor.getBlue(), s.color.getAlpha()) : markColor) :
+                            s.color,
+                        s.getWidth(myWidth),
+                        s.getDashed(),
+                        s.dashedColor,
+                        false, false, false);
                 }
             }
