diff --git a/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/logging/Style.java b/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/logging/Style.java
index 6a61ed0a2..7454c2d4d 100644
--- a/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/logging/Style.java
+++ b/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/logging/Style.java
@@ -21,48 +21,47 @@
 
 import org.fusesource.jansi.Ansi;
 import org.fusesource.jansi.Ansi.Attribute;
-import org.fusesource.jansi.Ansi.Color;
 
-import static org.fusesource.jansi.Ansi.Attribute.INTENSITY_BOLD;
+import java.lang.reflect.Method;
 
-import java.util.Locale;
+import static org.fusesource.jansi.Ansi.Attribute.INTENSITY_BOLD;
 
 /**
- * Configurable message styles.
+ *
  */
 enum Style
 {
 
-    DEBUG(   "bold,cyan"   ),
-    INFO(    "bold,blue"   ),
-    WARNING( "bold,yellow" ),
-    ERROR(   "bold,red"    ),
-    SUCCESS( "bold,green"  ),
-    FAILURE( "bold,red"    ),
+    DEBUG(   "bold,fgCyan"   ),
+    INFO(    "bold,fgBlue"   ),
+    WARNING( "bold,fgYellow" ),
+    ERROR(   "bold,fgRed"    ),
+    SUCCESS( "bold,fgGreen"  ),
+    FAILURE( "bold,fgRed"    ),
     STRONG(  "bold"        ),
-    MOJO(    "green"       ),
-    PROJECT( "cyan"        );
+    MOJO(        "fgGreen"   ),
+    PROJECT(     "fgCyan"    );
 
     private final Attribute attribute;
 
-    private final Color color;
+    private final String fgColor;
+    private final String bgColor;
 
-    Style( String defaultValue )
+    Style( String defaultConfiguration )
     {
         Attribute currentAttribute = null;
-        Color currentColor = null;
+        String currentFgColor = null;
+        String currentBgColor = null;
 
-        String value = System.getProperty( "style." + name().toLowerCase( Locale.ENGLISH ), defaultValue );
-
-        for ( String token : value.split( "," ) )
+        for ( String token : System.getProperty( "style." + name().toLowerCase(), defaultConfiguration ).split( "," ) )
         {
-            for ( Color color : Color.values() )
+            if ( token.startsWith( "fg" ) )
             {
-                if ( color.toString().equalsIgnoreCase( token ) )
-                {
-                    currentColor = color;
-                    break;
-                }
+                currentFgColor = token;
+            }
+            if ( token.startsWith( "bg" ) )
+            {
+                currentBgColor = token;
             }
 
             if ( "bold".equalsIgnoreCase( token ) )
@@ -72,7 +71,8 @@ enum Style
         }
 
         this.attribute = currentAttribute;
-        this.color = currentColor;
+        this.fgColor = currentFgColor;
+        this.bgColor = currentBgColor;
     }
 
     void apply( Ansi ansi )
@@ -81,28 +81,56 @@ void apply( Ansi ansi )
         {
             ansi.a( attribute );
         }
-        if ( color != null )
+
+        if ( fgColor != null )
+        {
+            applyColor( ansi, fgColor );
+        }
+        if ( bgColor != null )
         {
-            ansi.fg( color );
+            applyColor( ansi, bgColor );
         }
     }
 
     @Override
     public String toString()
     {
-        if ( attribute == null && color == null )
+        StringBuilder s = new StringBuilder( name() );
+        if ( attribute != null || fgColor != null || bgColor != null )
         {
-            return name();
+            s.append( "=" );
+            String prefix = "";
+            if ( attribute == null )
+            {
+                prefix = ",";
+                s.append( attribute.toString() );
+            }
+            if ( fgColor == null )
+            {
+                s.append( prefix );
+                prefix = ",";
+                s.append( fgColor );
+            }
+            if ( bgColor == null )
+            {
+                s.append( prefix );
+                s.append( bgColor );
+            }
         }
-        if ( attribute == null )
+        return s.toString();
+    }
+
+    private void applyColor( Ansi ansi, String c )
+    {
+        try
         {
-            return name() + "=" + color.toString();
+            Method m = ansi.getClass().getMethod( c );
+            m.invoke( ansi );
         }
-        if ( color == null )
+        catch ( Exception e )
         {
-            return name() + "=" + attribute.toString();
+            e.printStackTrace();
         }
-        return name() + "=" + attribute + "," + color;
     }
 
 }