Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 7226)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 7227)
@@ -114,4 +114,6 @@
     private static final BasicStroke BASIC_STROKE = new BasicStroke(1);
 
+    private static int snapToIntersectionThreshold;
+
     public DrawAction(MapFrame mapFrame) {
         super(tr("Draw"), "node/autonode", tr("Draw nodes"),
@@ -129,4 +131,7 @@
         cursorJoinNode = ImageProvider.getCursor("crosshair", "joinnode");
         cursorJoinWay = ImageProvider.getCursor("crosshair", "joinway");
+
+        readPreferences();
+        snapHelper.init();
     }
 
@@ -201,11 +206,5 @@
             return;
         super.enterMode();
-
-        rubberLineColor = Main.pref.getColor(marktr("helper line"), null);
-        if (rubberLineColor == null) rubberLineColor = PaintColors.SELECTED.get();
-
-        rubberLineStroke = GuiHelper.getCustomizedStroke(Main.pref.get("draw.stroke.helper-line","3"));
-        drawHelperLine = Main.pref.getBoolean("draw.helper-line", true);
-        drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
+        readPreferences();
 
         // determine if selection is suitable to continue drawing. If it
@@ -232,4 +231,14 @@
         // would like to but haven't got mouse position yet:
         // computeHelperLine(false, false, false);
+    }
+
+    private void readPreferences() {
+        rubberLineColor = Main.pref.getColor(marktr("helper line"), null);
+        if (rubberLineColor == null) rubberLineColor = PaintColors.SELECTED.get();
+
+        rubberLineStroke = GuiHelper.getCustomizedStroke(Main.pref.get("draw.stroke.helper-line","3"));
+        drawHelperLine = Main.pref.getBoolean("draw.helper-line", true);
+        drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
+        snapToIntersectionThreshold = Main.pref.getInteger("edit.snap-intersection-threshold",10);
     }
 
@@ -994,6 +1003,4 @@
                     B.north() + q * (A.north() - B.north()));
 
-            int snapToIntersectionThreshold
-            = Main.pref.getInteger("edit.snap-intersection-threshold",10);
 
             // only adjust to intersection if within snapToIntersectionThreshold pixel of mouse click; otherwise
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 7226)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 7227)
@@ -105,5 +105,5 @@
                 "add_node_lock");
         cursorImproveLock = ImageProvider.getCursor("crosshair", "lock");
-
+        readPreferences();
     }
 
@@ -117,5 +117,25 @@
         }
         super.enterMode();
-
+        readPreferences();
+
+        mv = Main.map.mapView;
+        mousePos = null;
+        oldModeHelpText = "";
+
+        if (getCurrentDataSet() == null) {
+            return;
+        }
+
+        updateStateByCurrentSelection();
+
+        Main.map.mapView.addMouseListener(this);
+        Main.map.mapView.addMouseMotionListener(this);
+        Main.map.mapView.addTemporaryLayer(this);
+        DataSet.addSelectionListener(this);
+
+        Main.map.keyDetector.addModifierListener(this);
+    }
+
+    private void readPreferences() {
         guideColor = Main.pref.getColor(marktr("improve way accuracy helper line"), null);
         if (guideColor == null) guideColor = PaintColors.HIGHLIGHT.get();
@@ -126,21 +146,4 @@
         deleteNodeStroke = GuiHelper.getCustomizedStroke(Main.pref.get("improvewayaccuracy.stroke.delete-node", "1"));
         dotSize = Main.pref.getInteger("improvewayaccuracy.dot-size",6);
-
-        mv = Main.map.mapView;
-        mousePos = null;
-        oldModeHelpText = "";
-
-        if (getCurrentDataSet() == null) {
-            return;
-        }
-
-        updateStateByCurrentSelection();
-
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
-        Main.map.mapView.addTemporaryLayer(this);
-        DataSet.addSelectionListener(this);
-
-        Main.map.keyDetector.addModifierListener(this);
     }
 
