Index: src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5098)
+++ src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(working copy)
@@ -140,22 +140,25 @@
         updateStatusLine();
         // repaint required if the helper line is active.
         boolean needsRepaint = drawHelperLine && !wayIsFinished;
-        // move newHighlights to oldHighlights; only update changed primitives
-        for(OsmPrimitive x : newHighlights) {
-            if(oldHighlights.contains(x)) {
-                continue;
+
+        if (drawTargetHighlight) {
+            // move newHighlights to oldHighlights; only update changed primitives
+            for(OsmPrimitive x : newHighlights) {
+                if(oldHighlights.contains(x)) {
+                    continue;
+                }
+                needsRepaint = true;
+                x.setHighlighted(true);
             }
-            needsRepaint = true;
-            x.setHighlighted(true);
+            oldHighlights.removeAll(newHighlights);
+            for(OsmPrimitive x : oldHighlights) {
+                x.setHighlighted(false);
+                needsRepaint = true;
+            }
+            oldHighlights = newHighlights;
         }
-        oldHighlights.removeAll(newHighlights);
-        for(OsmPrimitive x : oldHighlights) {
-            x.setHighlighted(false);
-            needsRepaint = true;
-        }
-        oldHighlights = newHighlights;
 
-        if ((!drawHelperLine || wayIsFinished) && !drawTargetHighlight)
+        if (!needsRepaint && !drawTargetHighlight)
             return;
 
         // update selection to reflect which way being modified
