Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java	(revision 11691)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java	(revision 11692)
@@ -146,6 +146,5 @@
         Color color = c.get(TEXT_COLOR, defaultTextColor, Color.class);
         float alpha = c.get(TEXT_OPACITY, 1f, Float.class);
-        color = new Color(color.getRed(), color.getGreen(),
-                color.getBlue(), Utils.colorFloat2int(alpha));
+        color = Utils.alphaMultiply(color, alpha);
 
         Float haloRadius = c.get(TEXT_HALO_RADIUS, null, Float.class);
@@ -156,7 +155,6 @@
         if (haloRadius != null) {
             haloColor = c.get(TEXT_HALO_COLOR, Utils.complement(color), Color.class);
-            float haloAlpha = c.get(TEXT_HALO_OPACITY, 1f, Float.class);
-            haloColor = new Color(haloColor.getRed(), haloColor.getGreen(),
-                    haloColor.getBlue(), Utils.colorFloat2int(haloAlpha));
+            float haloAlphaFactor = c.get(TEXT_HALO_OPACITY, 1f, Float.class);
+            haloColor = Utils.alphaMultiply(haloColor, haloAlphaFactor);
         }
 
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 11691)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 11692)
@@ -295,4 +295,17 @@
 
     /**
+     * Multiply the alpha value of the given color with the factor. The alpha value is clamped to 0..255
+     * @param color The color
+     * @param alphaFactor The factor to multiply alpha with.
+     * @return The new color.
+     * @since 11692
+     */
+    public static Color alphaMultiply(Color color, float alphaFactor) {
+        int alpha = Utils.colorFloat2int(Utils.colorInt2float(color.getAlpha()) * alphaFactor);
+        alpha = clamp(alpha, 0, 255);
+        return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha);
+    }
+
+    /**
      * Returns the complementary color of {@code clr}.
      * @param clr the color to complement
