Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3878)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3879)
@@ -211,15 +211,11 @@
     }
 
-    public void drawNodeSymbol(Node n, Symbol s, boolean selected, boolean member, TextElement text) {
+    public void drawNodeSymbol(Node n, Symbol s, Color fillColor, Color strokeColor, TextElement text) {
         Point p = nc.getPoint(n);
         if ((p.x < 0) || (p.y < 0) || (p.x > nc.getWidth()) || (p.y > nc.getHeight())) return;
         int radius = s.size / 2;
 
-        if (s.fillColor != null) {
-            if (inactive || n.isDisabled()) {
-                g.setColor(inactiveColor);
-            } else {
-                g.setColor(s.fillColor);
-            }
+        if (fillColor != null) {
+            g.setColor(fillColor);
             switch (s.symbol) {
                 case SQUARE:
@@ -235,9 +231,5 @@
         if (s.stroke != null) {
             g.setStroke(s.stroke);
-            if (inactive || n.isDisabled()) {
-                g.setColor(inactiveColor);
-            } else {
-                g.setColor(s.strokeColor);
-            }
+            g.setColor(strokeColor);
             switch (s.symbol) {
                 case SQUARE:
@@ -353,10 +345,10 @@
     }
 
-    public void drawArea(Way w, Color color, BufferedImage fillImage, String name) {
+    public void drawArea(Way w, Color color, BufferedImage fillImage, float fillImageAlpha, String name) {
         Polygon polygon = getPolygon(w);
-        drawArea(polygon, color, fillImage, name);
-    }
-
-    protected void drawArea(Polygon polygon, Color color, BufferedImage fillImage, String name) {
+        drawArea(polygon, color, fillImage, fillImageAlpha, name);
+    }
+
+    protected void drawArea(Polygon polygon, Color color, BufferedImage fillImage, float fillImageAlpha, String name) {
 
         if (fillImage == null) {
@@ -367,6 +359,6 @@
                     new Rectangle(polygon.xpoints[0], polygon.ypoints[0], fillImage.getWidth(), fillImage.getHeight()));
             g.setPaint(texture);
-            if (color.getAlpha() != 255) {
-                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, Utils.color_int2float(color.getAlpha())));
+            if (fillImageAlpha != 1f) {
+                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, fillImageAlpha));
             }
             g.fill(polygon);
@@ -411,5 +403,5 @@
     }
 
-    public void drawArea(Relation r, Color color, BufferedImage fillImage, String name) {
+    public void drawArea(Relation r, Color color, BufferedImage fillImage, float fillImageAlpha, String name) {
         Multipolygon multipolygon = new Multipolygon(nc);
         multipolygon.load(r);
@@ -420,5 +412,5 @@
                     continue;
                 }
-                drawArea(p, color, fillImage, getAreaName(r));
+                drawArea(p, color, fillImage, fillImageAlpha, getAreaName(r));
             }
         }
