diff --git a/src/org/openstreetmap/josm/data/validation/PaintVisitor.java b/src/org/openstreetmap/josm/data/validation/PaintVisitor.java
index 42c0b9b..795b6c1 100644
--- a/src/org/openstreetmap/josm/data/validation/PaintVisitor.java
+++ b/src/org/openstreetmap/josm/data/validation/PaintVisitor.java
@@ -120,13 +120,13 @@ public class PaintVisitor extends AbstractVisitor implements ValidatorVisitor {
 
         if (!paintedPoints.contains(pp)) {
             Point p = mv.getPoint(n);
-            g.setColor(color);
 
             if (selected) {
+                g.setColor(getHighlightColor());
                 g.fillOval(p.x - 5, p.y - 5, 10, 10);
-            } else {
-                g.drawOval(p.x - 5, p.y - 5, 10, 10);
             }
+            g.setColor(color);
+            g.drawOval(p.x - 5, p.y - 5, 10, 10);
             paintedPoints.add(pp);
         }
     }
@@ -139,13 +139,13 @@ public class PaintVisitor extends AbstractVisitor implements ValidatorVisitor {
      * @param color The color
      */
     protected void drawSegment(Point p1, Point p2, Color color) {
-        g.setColor(color);
 
         double t = Math.atan2(p2.x - p1.x, p2.y - p1.y);
         double cosT = 5 * Math.cos(t);
         double sinT = 5 * Math.sin(t);
         int deg = (int) Math.toDegrees(t);
         if (selected) {
+            g.setColor(getHighlightColor());
             int[] x = new int[] {(int) (p1.x + cosT), (int) (p2.x + cosT),
                                  (int) (p2.x - cosT), (int) (p1.x - cosT)};
             int[] y = new int[] {(int) (p1.y - sinT), (int) (p2.y - sinT),
@@ -153,14 +153,14 @@ public class PaintVisitor extends AbstractVisitor implements ValidatorVisitor {
             g.fillPolygon(x, y, 4);
             g.fillArc(p1.x - 5, p1.y - 5, 10, 10, deg,  180);
             g.fillArc(p2.x - 5, p2.y - 5, 10, 10, deg, -180);
-        } else {
-            g.drawLine((int) (p1.x + cosT), (int) (p1.y - sinT),
-                       (int) (p2.x + cosT), (int) (p2.y - sinT));
-            g.drawLine((int) (p1.x - cosT), (int) (p1.y + sinT),
-                       (int) (p2.x - cosT), (int) (p2.y + sinT));
-            g.drawArc(p1.x - 5, p1.y - 5, 10, 10, deg,  180);
-            g.drawArc(p2.x - 5, p2.y - 5, 10, 10, deg, -180);
         }
+        g.setColor(color);
+        g.drawLine((int) (p1.x + cosT), (int) (p1.y - sinT),
+                (int) (p2.x + cosT), (int) (p2.y - sinT));
+        g.drawLine((int) (p1.x - cosT), (int) (p1.y + sinT),
+                (int) (p2.x - cosT), (int) (p2.y + sinT));
+        g.drawArc(p1.x - 5, p1.y - 5, 10, 10, deg,  180);
+        g.drawArc(p2.x - 5, p2.y - 5, 10, 10, deg, -180);
     }
 
     /**
@@ -258,6 +258,14 @@ public class PaintVisitor extends AbstractVisitor implements ValidatorVisitor {
     }
 
     /**
+     * Gets the color to draw highlight markers with.
+     * @return The color.
+     */
+    private Color getHighlightColor() {
+        return new Color(color.getRed(), color.getGreen(), color.getBlue(), (int) (color.getAlpha() * .4));
+    }
+
+    /**
      * Clears the internal painted objects collections.
      */
     public void clearPaintedObjects() {
