Index: src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(Revision 15592)
+++ src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(Arbeitskopie)
@@ -3,10 +3,14 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
 import java.awt.GraphicsEnvironment;
+import java.awt.RenderingHints;
 import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
@@ -16,7 +20,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.AbstractAction;
@@ -455,6 +458,7 @@
         private final ImageIcon iconEye;
         private final ImageIcon iconEyeTranslucent;
         private boolean isTranslucent;
+        private Layer layer;
 
         /**
          * Constructs a new {@code LayerVisibleCheckBox}.
@@ -466,6 +470,7 @@
             setPressedIcon(ImageProvider.get("dialogs/layerlist", "eye-pressed"));
             setSelectedIcon(iconEye);
             isTranslucent = false;
+            setBackground(new Color(0, 0, 0, 0));
         }
 
         public void setTranslucent(boolean isTranslucent) {
@@ -479,6 +484,7 @@
         }
 
         public void updateStatus(Layer layer) {
+            this.layer = layer;
             boolean visible = layer.isVisible();
             setSelected(visible);
             if (displayLayerNumbers()) {
@@ -493,6 +499,21 @@
                 tr("layer is currently visible (click to hide layer)") :
                 tr("layer is currently hidden (click to show layer)"));
         }
+
+        @Override
+        protected void paintComponent(Graphics g) {
+            if (Config.getPref().getBoolean("dialog.layer.colorname", true)
+                    && layer != null && layer.getColor() != null) {
+                if (g instanceof Graphics2D) {
+                    Graphics2D g2d = (Graphics2D) g;
+                    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+                            RenderingHints.VALUE_ANTIALIAS_ON);
+                }
+                g.setColor(layer.getColor());
+                g.fillRoundRect(0, 0, getHeight() + 7, getHeight(), 20, 20);
+            }
+            super.paintComponent(g);
+        }
     }
 
     private static class NativeScaleLayerCheckBox extends JCheckBox {
@@ -649,11 +670,6 @@
             if (isActiveLayer(layer)) {
                 label.setFont(label.getFont().deriveFont(Font.BOLD));
             }
-            if (Config.getPref().getBoolean("dialog.layer.colorname", true)) {
-                label.setForeground(Optional
-                        .ofNullable(layer.getColor())
-                        .orElse(UIManager.getColor(isSelected ? "Table.selectionForeground" : "Table.foreground")));
-            }
             label.setIcon(layer.getIcon());
             label.setToolTipText(layer.getToolTipText());
             return label;
