Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 16699)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 16700)
@@ -6,4 +6,5 @@
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Composite;
 import java.awt.Dimension;
 import java.awt.Font;
@@ -682,8 +683,9 @@
      * @param spacing spacing between two images
      * @param phase initial spacing
+     * @param opacity the opacity
      * @param align alignment of the image. The top, center or bottom edge can be aligned with the way.
      */
     public void drawRepeatImage(IWay<?> way, MapImage pattern, boolean disabled, double offset, double spacing, double phase,
-            LineImageAlignment align) {
+                                float opacity, LineImageAlignment align) {
         final int imgWidth = pattern.getWidth();
         final double repeat = imgWidth + spacing;
@@ -730,5 +732,8 @@
                 int sx1 = Math.max(0, -x);
                 int sx2 = imgWidth - Math.max(0, x + imgWidth - (int) Math.ceil(segmentLength));
+                Composite saveComposite = g.getComposite();
+                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, opacity));
                 g.drawImage(image, x + sx1, dy1, x + sx2, dy2, sx1, 0, sx2, imgHeight, null);
+                g.setComposite(saveComposite);
                 imageStart += repeat;
             }
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java	(revision 16699)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/RepeatImageElement.java	(revision 16700)
@@ -67,4 +67,8 @@
     public float phase;
     /**
+     * The opacity
+     */
+    public float opacity;
+    /**
      * The alignment of the image
      */
@@ -81,7 +85,8 @@
      * @param spacing The space between the images
      * @param phase The offset of the first image along the way
+     * @param opacity The opacity
      * @param align The alignment of the image
      */
-    public RepeatImageElement(Cascade c, MapImage pattern, float offset, float spacing, float phase, LineImageAlignment align) {
+    public RepeatImageElement(Cascade c, MapImage pattern, float offset, float spacing, float phase, float opacity, LineImageAlignment align) {
         super(c, 2.9f);
         CheckParameterUtil.ensureParameterNotNull(pattern);
@@ -91,4 +96,5 @@
         this.spacing = spacing;
         this.phase = phase;
+        this.opacity = opacity;
         this.align = align;
     }
@@ -107,4 +113,5 @@
         float spacing = c.get(REPEAT_IMAGE_SPACING, 0f, Float.class);
         float phase = -c.get(REPEAT_IMAGE_PHASE, 0f, Float.class);
+        float opacity = c.get(REPEAT_IMAGE_OPACITY, 1f, Float.class);
 
         LineImageAlignment align = LineImageAlignment.CENTER;
@@ -116,5 +123,5 @@
         }
 
-        return new RepeatImageElement(c, pattern, offset, spacing, phase, align);
+        return new RepeatImageElement(c, pattern, offset, spacing, phase, opacity, align);
     }
 
@@ -124,5 +131,5 @@
         if (primitive instanceof IWay) {
             IWay<?> w = (IWay<?>) primitive;
-            painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, align);
+            painter.drawRepeatImage(w, pattern, painter.isInactiveMode() || w.isDisabled(), offset, spacing, phase, opacity, align);
         }
     }
@@ -148,5 +155,5 @@
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), pattern, offset, spacing, phase, align);
+        return Objects.hash(super.hashCode(), pattern, offset, spacing, phase, opacity, align);
     }
 
@@ -155,5 +162,5 @@
         return "RepeatImageStyle{" + super.toString() + "pattern=[" + pattern +
                 "], offset=" + offset + ", spacing=" + spacing +
-                ", phase=" + -phase + ", align=" + align + '}';
+                ", phase=" + -phase + ", opacity=" + opacity + ", align=" + align + '}';
     }
 }
