Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 9571)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 9572)
@@ -141,4 +141,5 @@
         readPreferences();
         snapHelper.init();
+        readPreferences();
     }
 
@@ -239,5 +240,6 @@
     }
 
-    private void readPreferences() {
+    @Override
+    protected void readPreferences() {
         rubberLineColor = Main.pref.getColor(marktr("helper line"), null);
         if (rubberLineColor == null) rubberLineColor = PaintColors.SELECTED.get();
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 9571)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 9572)
@@ -295,5 +295,4 @@
         Main.map.mapView.addMouseListener(this);
         Main.map.mapView.addMouseMotionListener(this);
-        readPreferences();
         ignoreNextKeyRelease = true;
         Main.map.keyDetector.addKeyListener(this);
@@ -301,5 +300,6 @@
     }
 
-    private void readPreferences() {
+    @Override
+    protected void readPreferences() {
         initialMoveDelay = Main.pref.getInteger("edit.initial-move-delay", 200);
         initialMoveThreshold = Main.pref.getInteger("extrude.initial-move-threshold", 1);
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 9571)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 9572)
@@ -142,5 +142,6 @@
     }
 
-    private void readPreferences() {
+    @Override
+    protected void readPreferences() {
         guideColor = Main.pref.getColor(marktr("improve way accuracy helper line"), null);
         if (guideColor == null) guideColor = PaintColors.HIGHLIGHT.get();
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 9571)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java	(revision 9572)
@@ -15,4 +15,6 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 
 /**
@@ -22,5 +24,5 @@
  * MapModes should register/deregister all necessary listeners on the map's view control.
  */
-public abstract class MapMode extends JosmAction implements MouseListener, MouseMotionListener {
+public abstract class MapMode extends JosmAction implements MouseListener, MouseMotionListener, PreferenceChangedListener {
     protected final Cursor cursor;
     protected boolean ctrl;
@@ -63,4 +65,6 @@
     public void enterMode() {
         putValue("active", Boolean.TRUE);
+        Main.pref.addPreferenceChangeListener(this);
+        readPreferences();
         Main.map.mapView.setNewCursor(cursor, this);
         updateStatusLine();
@@ -72,4 +76,5 @@
     public void exitMode() {
         putValue("active", Boolean.FALSE);
+        Main.pref.removePreferenceChangeListener(this);
         Main.map.mapView.resetCursor(this);
     }
@@ -83,4 +88,6 @@
         return "";
     }
+
+    protected void readPreferences() {}
 
     /**
@@ -160,3 +167,8 @@
         // Do nothing
     }
+
+    @Override
+    public void preferenceChanged(PreferenceChangeEvent e) {
+        readPreferences();
+    }
 }
