Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 6739)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/Cascade.java	(revision 6740)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.mappaint.mapcss.CSSColors;
+import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -171,5 +172,5 @@
                 return c;
             if (HEX_COLOR_PATTERN.matcher((String) o).matches()) {
-                return Utils.hexToColor((String) o);
+                return ColorHelper.html2color((String) o);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 6739)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj	(revision 6740)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector;
 import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.LinkSelector;
+import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
@@ -585,8 +586,12 @@
 {
     String val;
-    Token t;
+    Token t, t2;
     float f;
 }
 {
+        LOOKAHEAD(2)
+        t2=<IDENT> t=<HEXCOLOR>
+        { return Main.pref.getColor("mappaint." + (sheet == null ? "MapCSS" : sheet.title) + "." + t2.image, ColorHelper.html2color(t.image)); }
+    |
         t=<IDENT> { return new Keyword(t.image); }
     |
@@ -597,5 +602,5 @@
         f=ufloat() { return f; }
     |
-        t=<HEXCOLOR> { return Utils.hexToColor(t.image); }
+        t=<HEXCOLOR> { return ColorHelper.html2color(t.image); }
 }
 
Index: /trunk/src/org/openstreetmap/josm/tools/ColorHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ColorHelper.java	(revision 6739)
+++ /trunk/src/org/openstreetmap/josm/tools/ColorHelper.java	(revision 6740)
@@ -21,4 +21,8 @@
         if (html.length() > 0 && html.charAt(0) == '#')
             html = html.substring(1);
+        if (html.length() == 3) {
+            return html2color(new String(
+                    new char[]{html.charAt(0), html.charAt(0), html.charAt(1), html.charAt(1), html.charAt(2), html.charAt(2)}));
+        }
         if (html.length() != 6 && html.length() != 8)
             return null;
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6739)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6740)
@@ -630,22 +630,4 @@
 
     /**
-     * Convert Hex String to Color.
-     * @param s Must be of the form "#34a300" or "#3f2", otherwise throws Exception.
-     * Upper/lower case does not matter.
-     * @return The corresponding color.
-     */
-    static public Color hexToColor(String s) {
-        String clr = s.substring(1);
-        if (clr.length() == 3) {
-            clr = new String(new char[] {
-                clr.charAt(0), clr.charAt(0), clr.charAt(1), clr.charAt(1), clr.charAt(2), clr.charAt(2)
-            });
-        }
-        if (clr.length() != 6)
-            throw new IllegalArgumentException();
-        return new Color(Integer.parseInt(clr, 16));
-    }
-
-    /**
      * Opens a HTTP connection to the given URL and sets the User-Agent property to JOSM's one.
      * @param httpURL The HTTP url to open (must use http:// or https://)
Index: /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 6739)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 6740)
@@ -11,4 +11,5 @@
 import org.openstreetmap.josm.gui.mappaint.MultiCascade
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
+import org.openstreetmap.josm.tools.ColorHelper
 import org.openstreetmap.josm.tools.Utils
 
@@ -81,5 +82,5 @@
         def mc3 = new MultiCascade()
         css.apply(mc3, getPrimitive("highway", "footway"), 1, null, false);
-        assert Utils.hexToColor("#FF6644").equals(mc3.getCascade("default").get("color", null, Color.class))
+        assert ColorHelper.html2color("#FF6644").equals(mc3.getCascade("default").get("color", null, Color.class))
     }
 
@@ -217,3 +218,12 @@
         assert mc.getCascade(Environment.DEFAULT_LAYER).get("text") == "15 - 1.5 - Foo"
     }
+
+    @Test
+    public void testColorNameTicket9191() throws Exception {
+        def e = new Environment(null, new MultiCascade(), Environment.DEFAULT_LAYER, null)
+        getParser("{color: testcolour1#88DD22}").declaration().get(0).execute(e)
+        def expected = new Color(0x88DD22)
+        assert e.getCascade(Environment.DEFAULT_LAYER).get("color") == expected
+        assert Main.pref.getDefaultColor("MapCSS.testcolour1") == expected
+    }
 }
