Index: /trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4162)
@@ -30,4 +30,6 @@
 import java.util.Map.Entry;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.swing.JOptionPane;
@@ -72,4 +74,5 @@
     protected final SortedMap<String, String> properties = new TreeMap<String, String>();
     protected final SortedMap<String, String> defaults = new TreeMap<String, String>();
+    protected final SortedMap<String, String> colornames = new TreeMap<String, String>();
 
     public interface PreferenceChangeEvent{
@@ -526,4 +529,23 @@
     }
 
+    /* only for preferences */
+    synchronized public String getColorName(String o) {
+        try
+        {
+            Matcher m = Pattern.compile("mappaint\\.(.+?)\\.(.+)").matcher(o);
+            m.matches();
+            return tr("Paint style {0}: {1}", tr(m.group(1)), tr(m.group(2)));
+        }
+        catch (Exception e) {}
+        try
+        {
+            Matcher m = Pattern.compile("layer (.+)").matcher(o);
+            m.matches();
+            return tr("Layer: {0}", tr(m.group(1)));
+        }
+        catch (Exception e) {}
+        return tr(colornames.containsKey(o) ? colornames.get(o) : o);
+    }
+
     public Color getColor(ColorKey key) {
         return getColor(key.getColorName(), key.getSpecialName(), key.getDefault());
@@ -539,8 +561,11 @@
      */
     synchronized public Color getColor(String colName, String specName, Color def) {
-        putDefault("color."+colName, ColorHelper.color2html(def));
+        String colKey = colName.toLowerCase().replaceAll("[^a-z0-9]+",".");
+        if(!colKey.equals(colName))
+            colornames.put(colKey, colName);
+        putDefault("color."+colKey, ColorHelper.color2html(def));
         String colStr = specName != null ? get("color."+specName) : "";
         if(colStr.equals("")) {
-            colStr = get("color."+colName);
+            colStr = get("color."+colKey);
         }
         return colStr.equals("") ? def : ColorHelper.html2color(colStr);
Index: /trunk/src/org/openstreetmap/josm/data/validation/Severity.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/Severity.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/data/validation/Severity.java	(revision 4162)
@@ -40,4 +40,10 @@
     }
 
+    public static void getColors() {
+        for (Severity c:values()) {
+            c.getColor();
+        }
+    }
+
     @Override
     public String toString() {
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java	(revision 4162)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/ConflictColors.java	(revision 4162)
@@ -0,0 +1,68 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.conflict;
+
+import static org.openstreetmap.josm.tools.I18n.marktr;
+
+import java.awt.Color;
+import java.util.List;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Preferences.ColorKey;
+
+public enum ConflictColors implements ColorKey {
+
+    BGCOLOR_NO_CONFLICT(marktr("Conflict background: no conflict"), new Color(234,234,234)),
+    BGCOLOR_DECIDED(marktr("Conflict background: decided"), new Color(217,255,217)),
+    BGCOLOR_UNDECIDED(marktr("Conflict background: undecided"), new Color(255,197,197)),
+    BGCOLOR_MINE(marktr("Conflict background: mine"), Color.white),
+    BGCOLOR_THEIR(marktr("Conflict background: their"), new Color(217,255,217)),
+    BGCOLOR_COMBINED(marktr("Conflict background: combined"), new Color(217,255,217)),
+    BGCOLOR_SELECTED(marktr("Conflict background: selected"), new Color(143,170,255)),
+
+    FGCOLOR_UNDECIDED(marktr("Conflict foreground: undecided"), Color.black),
+    FGCOLOR_MINE(marktr("Conflict foreground: mine"), Color.lightGray),
+    FGCOLOR_THEIR(marktr("Conflict foreground: their"), Color.black),
+
+    BGCOLOR_EMPTY_ROW(marktr("Conflict background: empty row"), new Color(234,234,234)),
+    BGCOLOR_FROZEN(marktr("Conflict background: frozen"), new Color(234,234,234)),
+    BGCOLOR_PARTICIPAING_IN_COMPARISON(marktr("Conflict background: in comparison"), Color.black),
+    FGCOLOR_PARTICIPAING_IN_COMPARISON(marktr("Conflict foreground: in comparison"), Color.white),
+    BGCOLOR(marktr("Conflict background"), Color.white),
+    FGCOLOR(marktr("Conflict foreground"), Color.black),
+
+    BGCOLOR_NOT_IN_OPPOSITE(marktr("Conflict background: not in opposite"), new Color(255,197,197)),
+    BGCOLOR_IN_OPPOSITE(marktr("Conflict background: in opposite"), new Color(255,234,213)),
+    BGCOLOR_SAME_POSITION_IN_OPPOSITE(marktr("Conflict background: same position in opposite"), new Color(217,255,217));
+
+    private final String name;
+    private final Color defaultColor;
+
+    private static Color backgroundColorCache = null;
+
+    private ConflictColors(String name, Color defaultColor) {
+        this.name = name;
+        this.defaultColor = defaultColor;
+    }
+
+    public String getColorName() {
+        return name;
+    }
+
+    public Color getDefault() {
+        return defaultColor;
+    }
+
+    public String getSpecialName() {
+        return null;
+    }
+
+    public Color get() {
+        return Main.pref.getColor(this);
+    }
+
+    public static void getColors() {
+        for (ConflictColors c:values()) {
+            c.get();
+        }
+    }
+}
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairListCellRenderer.java	(revision 4162)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.gui.conflict.pair;
 
-import java.awt.Color;
 import java.awt.Component;
 
@@ -9,7 +8,7 @@
 import javax.swing.ListCellRenderer;
 
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
+
 public class ComparePairListCellRenderer extends JLabel implements ListCellRenderer {
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-
     public ComparePairListCellRenderer() {
         setOpaque(true);
@@ -24,6 +23,6 @@
         ComparePairType type = (ComparePairType)value;
         setText(type.getDisplayName());
-        setBackground(isSelected ? BGCOLOR_SELECTED : Color.WHITE);
-        setForeground(Color.BLACK);
+        setBackground(isSelected ? ConflictColors.BGCOLOR_SELECTED.get() : ConflictColors.BGCOLOR.get());
+        setForeground(ConflictColors.FGCOLOR.get());
         return this;
     }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTableCellRenderer.java	(revision 4162)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.gui.conflict.pair.nodes;
 
-import java.awt.Color;
 import java.awt.Component;
 import java.text.MessageFormat;
@@ -18,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.ListMergeModel;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -26,15 +26,4 @@
  */
 public  class NodeListTableCellRenderer extends JLabel implements TableCellRenderer {
-    //static private final Logger logger = Logger.getLogger(NodeListTableCellRenderer.class.getName());
-    //private static DecimalFormat COORD_FORMATTER = new DecimalFormat("###0.0000");
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-    public final static Color BGCOLOR_EMPTY_ROW = new Color(234,234,234);
-    public final static Color BGCOLOR_FROZEN = new Color(234,234,234);
-    public final static Color BGCOLOR_PARTICIPAING_IN_COMPARISON = Color.BLACK;
-    public final static Color FGCOLOR_PARTICIPAING_IN_COMPARISON = Color.WHITE;
-
-    public final static Color BGCOLOR_NOT_IN_OPPOSITE = new Color(255,197,197);
-    public final static Color BGCOLOR_IN_OPPOSITE = new Color(255,234,213);
-    public final static Color BGCOLOR_SAME_POSITION_IN_OPPOSITE = new Color(217,255,217);
 
     private final ImageIcon icon;
@@ -102,6 +91,6 @@
      */
     protected void reset() {
-        setBackground(Color.WHITE);
-        setForeground(Color.BLACK);
+        setBackground(ConflictColors.BGCOLOR.get());
+        setForeground(ConflictColors.FGCOLOR.get());
     }
 
@@ -116,14 +105,14 @@
         setBorder(null);
         if (model.getListMergeModel().isFrozen()) {
-            setBackground(BGCOLOR_FROZEN);
+            setBackground(ConflictColors.BGCOLOR_FROZEN.get());
         } else if (isSelected) {
-            setBackground(BGCOLOR_SELECTED);
+            setBackground(ConflictColors.BGCOLOR_SELECTED.get());
         } else if (model.isParticipatingInCurrentComparePair()) {
             if (model.isSamePositionInOppositeList(row)) {
-                setBackground(BGCOLOR_SAME_POSITION_IN_OPPOSITE);
+                setBackground(ConflictColors.BGCOLOR_SAME_POSITION_IN_OPPOSITE.get());
             } else if (model.isIncludedInOppositeList(row)) {
-                setBackground(BGCOLOR_IN_OPPOSITE);
+                setBackground(ConflictColors.BGCOLOR_IN_OPPOSITE.get());
             } else {
-                setBackground(BGCOLOR_NOT_IN_OPPOSITE);
+                setBackground(ConflictColors.BGCOLOR_NOT_IN_OPPOSITE.get());
             }
         }
@@ -137,5 +126,5 @@
     protected void renderEmptyRow() {
         setIcon(null);
-        setBackground(BGCOLOR_EMPTY_ROW);
+        setBackground(ConflictColors.BGCOLOR_EMPTY_ROW.get());
         setText("");
     }
@@ -151,8 +140,8 @@
         setBorder(rowNumberBorder);
         if (model.getListMergeModel().isFrozen()) {
-            setBackground(BGCOLOR_FROZEN);
+            setBackground(ConflictColors.BGCOLOR_FROZEN.get());
         } else if (model.isParticipatingInCurrentComparePair()) {
-            setBackground(BGCOLOR_PARTICIPAING_IN_COMPARISON);
-            setForeground(FGCOLOR_PARTICIPAING_IN_COMPARISON);
+            setBackground(ConflictColors.BGCOLOR_PARTICIPAING_IN_COMPARISON.get());
+            setForeground(ConflictColors.FGCOLOR_PARTICIPAING_IN_COMPARISON.get());
         }
         setText(Integer.toString(row+1));
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 4162)
@@ -4,5 +4,4 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -25,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
@@ -36,8 +36,4 @@
 public class PropertiesMerger extends JPanel implements Observer, IConflictResolver {
     private static DecimalFormat COORD_FORMATTER = new DecimalFormat("###0.0000000");
-
-    public final static Color BGCOLOR_NO_CONFLICT = new Color(234,234,234);
-    public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
-    public final static Color BGCOLOR_DECIDED = new Color(217,255,217);
 
     private  JLabel lblMyVersion;
@@ -328,21 +324,21 @@
         lblTheirCoordinates.setText(coordToString(model.getTheirCoords()));
         if (! model.hasCoordConflict()) {
-            lblMyCoordinates.setBackground(BGCOLOR_NO_CONFLICT);
-            lblMergedCoordinates.setBackground(BGCOLOR_NO_CONFLICT);
-            lblTheirCoordinates.setBackground(BGCOLOR_NO_CONFLICT);
+            lblMyCoordinates.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+            lblMergedCoordinates.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+            lblTheirCoordinates.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
         } else {
             if (!model.isDecidedCoord()) {
-                lblMyCoordinates.setBackground(BGCOLOR_UNDECIDED);
-                lblMergedCoordinates.setBackground(BGCOLOR_NO_CONFLICT);
-                lblTheirCoordinates.setBackground(BGCOLOR_UNDECIDED);
+                lblMyCoordinates.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
+                lblMergedCoordinates.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+                lblTheirCoordinates.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
             } else {
                 lblMyCoordinates.setBackground(
                         model.isCoordMergeDecision(MergeDecisionType.KEEP_MINE)
-                        ? BGCOLOR_DECIDED : BGCOLOR_NO_CONFLICT
+                        ? ConflictColors.BGCOLOR_DECIDED.get() : ConflictColors.BGCOLOR_NO_CONFLICT.get()
                 );
-                lblMergedCoordinates.setBackground(BGCOLOR_DECIDED);
+                lblMergedCoordinates.setBackground(ConflictColors.BGCOLOR_DECIDED.get());
                 lblTheirCoordinates.setBackground(
                         model.isCoordMergeDecision(MergeDecisionType.KEEP_THEIR)
-                        ? BGCOLOR_DECIDED : BGCOLOR_NO_CONFLICT
+                        ? ConflictColors.BGCOLOR_DECIDED.get() : ConflictColors.BGCOLOR_NO_CONFLICT.get()
                 );
             }
@@ -356,21 +352,21 @@
 
         if (! model.hasDeletedStateConflict()) {
-            lblMyDeletedState.setBackground(BGCOLOR_NO_CONFLICT);
-            lblMergedDeletedState.setBackground(BGCOLOR_NO_CONFLICT);
-            lblTheirDeletedState.setBackground(BGCOLOR_NO_CONFLICT);
+            lblMyDeletedState.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+            lblMergedDeletedState.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+            lblTheirDeletedState.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
         } else {
             if (!model.isDecidedDeletedState()) {
-                lblMyDeletedState.setBackground(BGCOLOR_UNDECIDED);
-                lblMergedDeletedState.setBackground(BGCOLOR_NO_CONFLICT);
-                lblTheirDeletedState.setBackground(BGCOLOR_UNDECIDED);
+                lblMyDeletedState.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
+                lblMergedDeletedState.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
+                lblTheirDeletedState.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
             } else {
                 lblMyDeletedState.setBackground(
                         model.isDeletedStateDecision(MergeDecisionType.KEEP_MINE)
-                        ? BGCOLOR_DECIDED : BGCOLOR_NO_CONFLICT
+                        ? ConflictColors.BGCOLOR_DECIDED.get() : ConflictColors.BGCOLOR_NO_CONFLICT.get()
                 );
-                lblMergedDeletedState.setBackground(BGCOLOR_DECIDED);
+                lblMergedDeletedState.setBackground(ConflictColors.BGCOLOR_DECIDED.get());
                 lblTheirDeletedState.setBackground(
                         model.isDeletedStateDecision(MergeDecisionType.KEEP_THEIR)
-                        ? BGCOLOR_DECIDED : BGCOLOR_NO_CONFLICT
+                        ? ConflictColors.BGCOLOR_DECIDED.get() : ConflictColors.BGCOLOR_NO_CONFLICT.get()
                 );
             }
@@ -380,7 +376,7 @@
     protected void updateReferrers() {
         lblMyReferrers.setText(referrersToString(model.getMyReferrers()));
-        lblMyReferrers.setBackground(BGCOLOR_NO_CONFLICT);
+        lblMyReferrers.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
         lblTheirReferrers.setText(referrersToString(model.getTheirReferrers()));
-        lblTheirReferrers.setBackground(BGCOLOR_NO_CONFLICT);
+        lblTheirReferrers.setBackground(ConflictColors.BGCOLOR_NO_CONFLICT.get());
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java	(revision 4162)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.ListMergeModel;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -25,16 +26,4 @@
  */
 public  class RelationMemberTableCellRenderer extends JLabel implements TableCellRenderer {
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-    public final static Color BGCOLOR_EMPTY_ROW = new Color(234,234,234);
-
-    public final static Color BGCOLOR_NOT_IN_OPPOSITE = new Color(255,197,197);
-    public final static Color BGCOLOR_IN_OPPOSITE = new Color(255,234,213);
-    public final static Color BGCOLOR_SAME_POSITION_IN_OPPOSITE = new Color(217,255,217);
-
-    public final static Color BGCOLOR_PARTICIPAING_IN_COMPARISON = Color.BLACK;
-    public final static Color FGCOLOR_PARTICIPAING_IN_COMPARISON = Color.WHITE;
-
-    public final static Color BGCOLOR_FROZEN = new Color(234,234,234);
-
     private  Border rowNumberBorder = null;
 
@@ -84,6 +73,6 @@
      */
     protected void reset() {
-        setBackground(Color.WHITE);
-        setForeground(Color.BLACK);
+        setBackground(ConflictColors.BGCOLOR.get());
+        setForeground(ConflictColors.FGCOLOR.get());
         setBorder(null);
         setIcon(null);
@@ -92,28 +81,28 @@
 
     protected void renderBackground(ListMergeModel<Node>.EntriesTableModel model, RelationMember member, int row, int col, boolean isSelected) {
-        Color bgc = Color.WHITE;
+        Color bgc = ConflictColors.BGCOLOR.get();
         if (col == 0) {
             if (model.getListMergeModel().isFrozen()) {
-                bgc = BGCOLOR_FROZEN;
+                bgc = ConflictColors.BGCOLOR_FROZEN.get();
             } else if (model.isParticipatingInCurrentComparePair()) {
-                bgc = BGCOLOR_PARTICIPAING_IN_COMPARISON;
+                bgc = ConflictColors.BGCOLOR_PARTICIPAING_IN_COMPARISON.get();
             } else if (isSelected) {
-                bgc = BGCOLOR_SELECTED;
+                bgc = ConflictColors.BGCOLOR_SELECTED.get();
             }
         } else {
             if (model.getListMergeModel().isFrozen()) {
-                bgc = BGCOLOR_FROZEN;
+                bgc = ConflictColors.BGCOLOR_FROZEN.get();
             } else if (member == null) {
-                bgc = BGCOLOR_EMPTY_ROW;
+                bgc = ConflictColors.BGCOLOR_EMPTY_ROW.get();
             } else if (isSelected) {
-                bgc = BGCOLOR_SELECTED;
+                bgc = ConflictColors.BGCOLOR_SELECTED.get();
             } else {
                 if (model.isParticipatingInCurrentComparePair()) {
                     if (model.isSamePositionInOppositeList(row)) {
-                        bgc = BGCOLOR_SAME_POSITION_IN_OPPOSITE;
+                        bgc = ConflictColors.BGCOLOR_SAME_POSITION_IN_OPPOSITE.get();
                     } else if (model.isIncludedInOppositeList(row)) {
-                        bgc = BGCOLOR_IN_OPPOSITE;
+                        bgc = ConflictColors.BGCOLOR_IN_OPPOSITE.get();
                     } else {
-                        bgc = BGCOLOR_NOT_IN_OPPOSITE;
+                        bgc = ConflictColors.BGCOLOR_NOT_IN_OPPOSITE.get();
                     }
                 }
@@ -124,7 +113,7 @@
 
     protected void renderForeground(ListMergeModel<Node>.EntriesTableModel model, RelationMember member, int row, int col, boolean isSelected) {
-        Color fgc = Color.BLACK;
+        Color fgc = ConflictColors.FGCOLOR.get();
         if (col == 0 && model.isParticipatingInCurrentComparePair() && ! model.getListMergeModel().isFrozen()) {
-            fgc = Color.WHITE;
+            fgc = ConflictColors.FGCOLOR_PARTICIPAING_IN_COMPARISON.get();
         }
         setForeground(fgc);
@@ -155,5 +144,5 @@
     protected void renderEmptyRow() {
         setIcon(null);
-        setBackground(BGCOLOR_EMPTY_ROW);
+        setBackground(ConflictColors.BGCOLOR_EMPTY_ROW.get());
         setText("");
     }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MergedTableCellRenderer.java	(revision 4162)
@@ -4,26 +4,19 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
-
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
 public class MergedTableCellRenderer extends TagMergeTableCellRenderer {
-
-    public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
-    public final static Color BGCOLOR_MINE = new Color(217,255,217);
-    public final static Color BGCOLOR_THEIR = new Color(217,255,217);
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
         if (isSelected) {
-            setBackground(BGCOLOR_SELECTED);
+            setBackground(ConflictColors.BGCOLOR_SELECTED.get());
             return;
         }
         if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_MINE);
+            setBackground(ConflictColors.BGCOLOR_COMBINED.get());
         } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_THEIR);
+            setBackground(ConflictColors.BGCOLOR_COMBINED.get());
         } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_UNDECIDED);
+            setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/MineTableCellRenderer.java	(revision 4162)
@@ -4,27 +4,22 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
-
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
 public class MineTableCellRenderer extends TagMergeTableCellRenderer {
-
-    public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
-    public final static Color BGCOLOR_MINE = new Color(217,255,217);
-    public final static Color BGCOLOR_THEIR = Color.white;
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
+    /* NOTE: mine and their colors are reversed for this renderer */
 
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
         if (isSelected)  {
-            setBackground(BGCOLOR_SELECTED);
+            setBackground(ConflictColors.BGCOLOR_SELECTED.get());
             return;
         }
 
         if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_MINE);
+            setBackground(ConflictColors.BGCOLOR_THEIR.get());
         } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_THEIR);
+            setBackground(ConflictColors.BGCOLOR_MINE.get());
         } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_UNDECIDED);
+            setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
         }
     }
@@ -32,9 +27,9 @@
     protected void setTextColor(TagMergeItem item) {
         if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
-            setForeground(Color.black);
+            setForeground(ConflictColors.FGCOLOR_THEIR.get());
         } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
-            setForeground(Color.LIGHT_GRAY);
+            setForeground(ConflictColors.FGCOLOR_MINE.get());
         } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
-            setForeground(Color.black);
+            setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
         }
     }
@@ -65,4 +60,3 @@
         }
     }
-
 }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeTableCellRenderer.java	(revision 4162)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.gui.conflict.pair.tags;
 
-import java.awt.Color;
 import java.awt.Component;
 import java.text.MessageFormat;
@@ -9,4 +8,6 @@
 import javax.swing.JTable;
 import javax.swing.table.TableCellRenderer;
+
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 
 public abstract class TagMergeTableCellRenderer extends JLabel implements TableCellRenderer {
@@ -18,6 +19,6 @@
     protected void reset() {
         setOpaque(true);
-        setBackground(Color.white);
-        setForeground(Color.black);
+        setBackground(ConflictColors.BGCOLOR.get());
+        setForeground(ConflictColors.FGCOLOR.get());
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TheirTableCellRenderer.java	(revision 4162)
@@ -4,26 +4,20 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
-
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
 
 public class TheirTableCellRenderer extends TagMergeTableCellRenderer {
 
-    public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
-    public final static Color BGCOLOR_MINE = Color.white;
-    public final static Color BGCOLOR_THEIR = new Color(217,255,217);
-    public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-
     protected void setBackgroundColor(TagMergeItem item, boolean isSelected) {
         if (isSelected) {
-            setBackground(BGCOLOR_SELECTED);
+            setBackground(ConflictColors.BGCOLOR_SELECTED.get());
             return;
         }
         if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_MINE);
+            setBackground(ConflictColors.BGCOLOR_MINE.get());
         } else if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_THEIR);
+            setBackground(ConflictColors.BGCOLOR_THEIR.get());
         } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
-            setBackground(BGCOLOR_UNDECIDED);
+            setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
         }
     }
@@ -31,9 +25,9 @@
     protected void setTextColor(TagMergeItem item) {
         if (MergeDecisionType.KEEP_THEIR.equals(item.getMergeDecision())) {
-            setForeground(Color.black);
+            setForeground(ConflictColors.FGCOLOR_THEIR.get());
         } else if (MergeDecisionType.KEEP_MINE.equals(item.getMergeDecision())) {
-            setForeground(Color.LIGHT_GRAY);
+            setForeground(ConflictColors.FGCOLOR_MINE.get());
         } else if (MergeDecisionType.UNDECIDED.equals(item.getMergeDecision())) {
-            setForeground(Color.black);
+            setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java	(revision 4162)
@@ -151,8 +151,8 @@
         protected void renderColors(boolean selected) {
             if (selected) {
-                setForeground( UIManager.getColor("ComboBox.selectionForeground"));
+                setForeground(UIManager.getColor("ComboBox.selectionForeground"));
                 setBackground(UIManager.getColor("ComboBox.selectionBackground"));
             } else {
-                setForeground( UIManager.getColor("ComboBox.foreground"));
+                setForeground(UIManager.getColor("ComboBox.foreground"));
                 setBackground(UIManager.getColor("ComboBox.background"));
             }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellRenderer.java	(revision 4162)
@@ -16,4 +16,5 @@
 import javax.swing.table.TableCellRenderer;
 
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -23,6 +24,4 @@
  */
 public class MultiValueCellRenderer extends JLabel implements TableCellRenderer {
-
-    public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
 
     private ImageIcon iconDecided;
@@ -46,5 +45,5 @@
             case UNDECIDED:
                 setForeground(UIManager.getColor("Table.foreground"));
-                setBackground(BGCOLOR_UNDECIDED);
+                setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
                 break;
             case KEEP_NONE:
Index: /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 4162)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.layer;
 
+import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
@@ -44,5 +45,5 @@
 
     public static Color getFadeColor() {
-        return Main.pref.getColor("imagery.fade", Color.white);
+        return Main.pref.getColor(marktr("Imagery fade"), Color.white);
     }
 
@@ -53,5 +54,5 @@
 
     public static void setFadeColor(Color color) {
-        Main.pref.putColor("imagery.fade", color);
+        Main.pref.putColor(marktr("Imagery fade"), color);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 4161)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 4162)
@@ -16,6 +16,4 @@
 import java.util.TreeMap;
 import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import javax.swing.BorderFactory;
@@ -35,7 +33,10 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
+import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.gui.MapScaler;
+import org.openstreetmap.josm.gui.conflict.ConflictColors;
 import org.openstreetmap.josm.gui.dialogs.ConflictDialog;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
+import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
@@ -132,19 +133,5 @@
     private String getName(String o)
     {
-        try
-        {
-            Matcher m = Pattern.compile("mappaint\\.(.+?)\\.(.+)").matcher(o);
-            m.matches();
-            return tr("Paint style {0}: {1}", tr(m.group(1)), tr(m.group(2)));
-        }
-        catch (Exception e) {}
-        try
-        {
-            Matcher m = Pattern.compile("layer (.+)").matcher(o);
-            m.matches();
-            return tr("Layer: {0}", tr(m.group(1)));
-        }
-        catch (Exception e) {}
-        return tr(o);
+        return Main.pref.getColorName(o);
     }
 
@@ -260,7 +247,10 @@
     private void fixColorPrefixes() {
         PaintColors.getColors();
+        ConflictColors.getColors();
+        Severity.getColors();
         MarkerLayer.getColor(null);
         GpxLayer.getColor(null);
         OsmDataLayer.getOutsideColor();
+        ImageryLayer.getFadeColor();
         MapScaler.getColor();
         ConflictDialog.getColor();
