Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 11054)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 11055)
@@ -7,4 +7,5 @@
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
+import java.awt.event.MouseWheelEvent;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -40,4 +41,8 @@
 public final class LayerVisibilityAction extends AbstractAction implements IEnabledStateUpdating, LayerAction {
     private static final int SLIDER_STEPS = 100;
+    /**
+     * Steps the value is changed by a mouse wheel change (one full click)
+     */
+    private static final int SLIDER_WHEEL_INCREMENT = 5;
     private static final double MAX_SHARPNESS_FACTOR = 2;
     private static final double MAX_COLORFUL_FACTOR = 2;
@@ -172,4 +177,5 @@
 
             addChangeListener(e -> onStateChanged());
+            addMouseWheelListener(this::mouseWheelMoved);
         }
 
@@ -186,4 +192,16 @@
         }
 
+        protected void mouseWheelMoved(MouseWheelEvent e) {
+            double rotation = e.getPreciseWheelRotation();
+            double destinationValue = getValue() + rotation * SLIDER_WHEEL_INCREMENT;
+            if (rotation < 0) {
+                destinationValue = Math.floor(destinationValue);
+            } else {
+                destinationValue = Math.ceil(destinationValue);
+            }
+            setValue(Utils.clamp((int) destinationValue, getMinimum(), getMaximum()));
+            e.consume();
+        }
+
         protected void applyValueToLayer(T layer) {
         }
@@ -204,11 +222,5 @@
         protected int convertFromRealValue(double value) {
             int i = (int) ((value - minValue) / (maxValue - minValue) * SLIDER_STEPS + .5);
-            if (i < getMinimum()) {
-                return getMinimum();
-            } else if (i > getMaximum()) {
-                return getMaximum();
-            } else {
-                return i;
-            }
+            return Utils.clamp(i, getMinimum(), getMaximum());
         }
 
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 11054)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 11055)
@@ -1502,3 +1502,21 @@
         }
     }
+
+    /**
+     * Clamp a integer value to the given range
+     * @param val The value
+     * @param min minimum value
+     * @param max maximum value
+     * @return the value
+     * @since 11053
+     */
+    public static int clamp(int val, int min, int max) {
+        if (val < min) {
+            return min;
+        } else if (val > max) {
+            return max;
+        } else {
+            return val;
+        }
+    }
 }
