Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 32929)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 32930)
@@ -9,13 +9,14 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
 public class FDSettings {
-    public Color COLOR_FIXED;
-    public Color COLOR_NORMAL;
-    public Color COLOR_DELETE;
-    public Color COLOR_SELECTEDFRAGMENT;
-    public Color COLOR_EDITEDFRAGMENT;
-    public Color COLOR_SIMPLIFIED;
+    public ColorProperty COLOR_FIXED = new ColorProperty("fastdraw.color.delete", Color.red);
+    public ColorProperty COLOR_NORMAL = new ColorProperty("fastdraw.color.edit", Color.orange);
+    public ColorProperty COLOR_DELETE = new ColorProperty("fastdraw.color.fixed", Color.green);
+    public ColorProperty COLOR_SELECTEDFRAGMENT = new ColorProperty("fastdraw.color.normal", Color.red);
+    public ColorProperty COLOR_EDITEDFRAGMENT = new ColorProperty("fastdraw.color.select", Color.blue);
+    public ColorProperty COLOR_SIMPLIFIED = new ColorProperty("fastdraw.color.simplified", Color.orange);
 
     public double maxDist;
@@ -51,11 +52,4 @@
 
     public void loadPrefs() {
-        COLOR_DELETE = Main.pref.getColor("fastdraw.color.delete", Color.red);
-        COLOR_EDITEDFRAGMENT = Main.pref.getColor("fastdraw.color.edit", Color.orange);
-        COLOR_FIXED = Main.pref.getColor("fastdraw.color.fixed", Color.green);
-        COLOR_NORMAL = Main.pref.getColor("fastdraw.color.normal", Color.red);
-        COLOR_SELECTEDFRAGMENT = Main.pref.getColor("fastdraw.color.select", Color.blue);
-        COLOR_SIMPLIFIED = Main.pref.getColor("fastdraw.color.simplified", Color.orange);
-
         normalStroke = GuiHelper.getCustomizedStroke(Main.pref.get("fastdraw.stroke.normal", "2"));
         deleteStroke = GuiHelper.getCustomizedStroke(Main.pref.get("fastdraw.stroke.delete", "3"));
Index: applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 32929)
+++ applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 32930)
@@ -162,8 +162,8 @@
         LatLon pp1, pp2;
         p1 = line.getPoint(pts.get(0));
-        g.setColor(settings.COLOR_FIXED);
+        g.setColor(settings.COLOR_FIXED.get());
         g.fillOval(p1.x - bigDotSize/2, p1.y - bigDotSize/2, bigDotSize, bigDotSize);
         Color lineColor, initLineColor;
-        initLineColor = line.wasSimplified() ? settings.COLOR_SIMPLIFIED : settings.COLOR_NORMAL;
+        initLineColor = line.wasSimplified() ? settings.COLOR_SIMPLIFIED.get() : settings.COLOR_NORMAL.get();
         lineColor = initLineColor;
         int rp, dp;
@@ -180,8 +180,8 @@
                 p2 = line.getPoint(pp2);
                 if (shift && highlightedFragmentStart == pp1 && nearestPointIndex < 0) {
-                    lineColor = settings.COLOR_SELECTEDFRAGMENT;
+                    lineColor = settings.COLOR_SELECTEDFRAGMENT.get();
                 }
                 if (!shift && line.isLastPoint(i)) {
-                    lineColor = settings.COLOR_EDITEDFRAGMENT;
+                    lineColor = settings.COLOR_EDITEDFRAGMENT.get();
                 }
                 g.setColor(lineColor);
@@ -198,5 +198,5 @@
                             // highlight node to delete
                             g.setStroke(settings.deleteStroke);
-                            g.setColor(settings.COLOR_DELETE);
+                            g.setColor(settings.COLOR_DELETE.get());
                             g.drawLine(p2.x - 5, p2.y - 5, p2.x + 5, p2.y + 5);
                             g.drawLine(p2.x - 5, p2.y + 5, p2.x + 5, p2.y - 5);
@@ -205,5 +205,5 @@
                             // highlight node to toggle fixation
                             g.setStroke(settings.deleteStroke);
-                            g.setColor(line.isFixed(pp2) ? settings.COLOR_NORMAL : settings.COLOR_FIXED);
+                            g.setColor(line.isFixed(pp2) ? settings.COLOR_NORMAL.get() : settings.COLOR_FIXED.get());
                             g.fillOval(p2.x - bigDotSize/2-2, p2.y - bigDotSize/2-2, bigDotSize+4, bigDotSize+4);
                             g.setStroke(settings.normalStroke);
@@ -212,5 +212,5 @@
                 }
             }
-            g.setColor(settings.COLOR_FIXED);
+            g.setColor(settings.COLOR_FIXED.get());
             for (Point p: fixedPoints) {
                 g.fillOval(p.x - bigDotSize/2, p.y - bigDotSize/2, bigDotSize, bigDotSize);
