Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2391)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2392)
@@ -114,9 +114,9 @@
             return (styles != null) ? styles.getIcon(osm) : null;
 
-            if(osm.mappaintStyle == null && styles != null) {
-                osm.mappaintStyle = styles.getIcon(osm);
-            }
-
-            return (IconElemStyle)osm.mappaintStyle;
+        if(osm.mappaintStyle == null && styles != null) {
+            osm.mappaintStyle = styles.getIcon(osm);
+        }
+
+        return (IconElemStyle)osm.mappaintStyle;
     }
 
@@ -158,5 +158,9 @@
 
         if (nodeStyle != null && isZoomOk(nodeStyle) && showIcons > dist) {
-            drawNode(n, nodeStyle.icon, nodeStyle.annotate, data.isSelected(n));
+            if (inactive || n.isDisabled()) {
+                drawNode(n, nodeStyle.getDisabledIcon(), nodeStyle.annotate, data.isSelected(n));
+            } else {
+                drawNode(n, nodeStyle.icon, nodeStyle.annotate, data.isSelected(n));
+            }
         } else if (n.highlighted) {
             drawNode(n, highlightColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
@@ -165,5 +169,5 @@
         } else if (n.isTagged()) {
             drawNode(n, nodeColor, taggedNodeSize, taggedNodeRadius, fillUnselectedNode);
-        } else if (n.isDisabled()) {
+        } else if (inactive || n.isDisabled()) {
             drawNode(n, inactiveColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
         } else {
@@ -1251,5 +1255,9 @@
             if (name!=null && annotate)
             {
-                g.setColor(textColor);
+                if (inactive || n.isDisabled()) {
+                    g.setColor(inactiveColor);
+                } else {
+                    g.setColor(textColor);
+                }
                 Font defaultFont = g.getFont();
                 g.setFont (orderFont);
@@ -1371,5 +1379,9 @@
             //profilerVisibleNodes++;
 
-            g.setColor(color);
+            if (inactive || n.isDisabled()) {
+                g.setColor(inactiveColor);
+            } else {
+                g.setColor(color);
+            }
             if (fill) {
                 g.fillRect(p.x - radius, p.y - radius, size, size);
@@ -1384,5 +1396,9 @@
                 if (name!=null /* && annotate */)
                 {
-                    g.setColor(textColor);
+                    if (inactive || n.isDisabled()) {
+                        g.setColor(inactiveColor);
+                    } else {
+                        g.setColor(textColor);
+                    }
                     Font defaultFont = g.getFont();
                     g.setFont (orderFont);
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java	(revision 2391)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/IconElemStyle.java	(revision 2392)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.gui.mappaint;
+
+import javax.swing.GrayFilter;
 import javax.swing.ImageIcon;
 
@@ -5,4 +7,5 @@
 {
     public ImageIcon icon;
+    private ImageIcon disabledIcon;
     public boolean annotate;
 
@@ -17,9 +20,16 @@
     public IconElemStyle() { init(); }
 
-    public void init()
-    {
+    public void init() {
         icon = null;
         priority = 0;
         annotate = true;
     }
+    
+    public ImageIcon getDisabledIcon() {
+        if (disabledIcon != null)
+            return disabledIcon;
+        if (icon == null)
+            return null;
+        return disabledIcon = new ImageIcon(GrayFilter.createDisabledImage(icon.getImage()));
+    }
 }
