diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index a903a78..00b1c27 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -410,6 +410,28 @@ function color_scheme_form_submit($form, &$form_state) {
 function _color_rewrite_stylesheet($theme, &$info, &$paths, $palette, $style) {
   // Prepare color conversion table.
   $conversion = $palette;
+
+  $indent = str_pad(' ', 6);
+  $lines = explode("\n", var_export($palette, TRUE));
+  array_shift($lines);
+  $message  = "    'PaletteName' => array(\n";
+  $message .= $indent . "'title' => t('PaletteName'),\n";
+  $message .= $indent . "'colors' => array(\n";
+  $last_line = $indent . array_pop($lines) . ',';
+  foreach ($lines as $line) {
+    if (strpos($line, ' => ') !== FALSE) {
+      $parts = explode(' => ', $line);
+      $message .= $indent . $parts[0] . str_pad(' ', (46 - strlen($line))) . '=> ' . $parts[1];
+    } else {
+      $message .=  "$indent  $line";
+    }
+    $message .=  "\n";
+  }
+  $message .= "$last_line\n";
+  $message .= "    ),\n";
+  $message = '<pre>' . $message . '</pre>';
+  watchdog('Custom color palette', $message);
+
   foreach ($conversion as $k => $v) {
     $conversion[$k] = drupal_strtolower($v);
   }
@@ -422,7 +444,7 @@ function _color_rewrite_stylesheet($theme, &$info, &$paths, $palette, $style) {
   }
 
   // Find all colors in the stylesheet and the chunks in between.
-  $style = preg_split('/(#[0-9a-f]{6}|#[0-9a-f]{3})/i', $style, -1, PREG_SPLIT_DELIM_CAPTURE);
+  $style = preg_split('/(#[0-9a-f]{6}|#[0-9a-f]{3}|rgba\(\d{0,3},\d{0,3},\d{0,3},\d+(\.\d+)?\))/i', $style, -1, PREG_SPLIT_DELIM_CAPTURE);
   $is_color = FALSE;
   $output = '';
   $base = 'base';
@@ -432,6 +454,10 @@ function _color_rewrite_stylesheet($theme, &$info, &$paths, $palette, $style) {
     if ($is_color) {
       $chunk = drupal_strtolower($chunk);
       // Check if this is one of the colors in the default palette.
+      if ($is_rgba = (strpos($chunk, 'rgba(') !== FALSE)) {
+        $rgba = $chunk;
+        $chunk = _color_rgba2hex($chunk);
+      }
       if ($key = array_search($chunk, $default)) {
         $chunk = $conversion[$key];
       }
@@ -439,6 +465,9 @@ function _color_rewrite_stylesheet($theme, &$info, &$paths, $palette, $style) {
       else {
         $chunk = _color_shift($palette[$base], $default[$base], $chunk, $info['blend_target']);
       }
+      if ($is_rgba) {
+        $chunk = _color_hex2rgba($rgba, $chunk);
+      }
     }
     else {
       // Determine the most suitable base color for the next color.
@@ -729,6 +758,49 @@ function _color_rgb2hsl($rgb) {
   return array($h, $s, $l);
 }
 
+/*
+ * Create a css hex string from a css rgba string
+ */
+function _color_rgba2hex($rgba) {
+  $re = <<<EOT
+/rgba\(
+  (\d{1,3}) \s*?,\s*? # Red (0 to 255) + space + comma separator + space
+  (\d{1,3}) \s*?,\s*? # Green
+  (\d{1,3}) \s*?,\s*? # Blue
+  \d+(?:\.\d+)?  \s*? # Transparency (0 to 1) + space
+\)/ix
+EOT
+;
+  preg_match($re, $rgba, $rgb);
+  array_shift($rgb);
+  return '#' . implode(array_map('_color_byte2hex', $rgb));
+}
+
+/*
+ * Insert a 6 digit hex value into a css rgba string
+ */
+function _color_hex2rgba($rgba, $hex) {
+  $re = <<<EOT
+/rgba\(
+  (?:\d{1,3} \s*?,\s*?){3} # Throw away RGB
+  (\d+(?:\.\d+)?)          # Capture transparency (0 to 1)
+  \s*?
+\)/ix
+EOT
+;
+  preg_match($re, $rgba, $a);
+  preg_match('/([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i', $hex, $hex2);
+  array_shift($hex2);
+  return 'rgba(' . implode(',', array_map('hexdec', $hex2)) . ",$a[1])";
+}
+
+/*
+ * Convert decimal value up to 255 to 2 digit hex notation
+ */
+function _color_byte2hex($dec) {
+  return str_pad(dechex($dec), 2, '0', STR_PAD_LEFT);
+}
+
 /**
  * Implements hook_library_info().
  */
