diff --git a/color_field.install b/color_field.install
index 9a30f17..bea4f27 100644
--- a/color_field.install
+++ b/color_field.install
@@ -10,15 +10,31 @@
  * Defines the database schema of the field, using the format used by the
  * Schema API.
  *
- * The data we will store here is just one 7-character element.
+ * The data we will store here is:
+ * RGB: Just one 7-character element.
+ * RGBA: Full rbga declaration with 25 chars. (Eg.: rgba(255, 255, 255, 0.99))
  */
 function color_field_field_schema($field) {
-  $columns = array(
-    'rgb' => array('type' => 'varchar', 'length' => 7, 'not null' => FALSE),
-  );
-  $indexes = array(
-    'rgb' => array('rgb'),
-  );
+  switch ($field['type']) {
+    case 'color_field_rgb':
+      $columns = array(
+        'rgb' => array('type' => 'varchar', 'length' => 7, 'not null' => FALSE),
+      );
+      $indexes = array(
+        'rgb' => array('rgb'),
+      );
+      break;
+    case 'color_field_rgba':
+      $columns = array(
+        'rgb' => array('type' => 'varchar', 'length' => 25, 'not null' => FALSE),
+      );
+      $indexes = array(
+        'rgb' => array('rgb'),
+      );
+      break;
+    default:
+      return;
+  }
   return array(
     'columns' => $columns,
     'indexes' => $indexes,
diff --git a/color_field.module b/color_field.module
index df3ec9b..40e1f2c 100644
--- a/color_field.module
+++ b/color_field.module
@@ -65,6 +65,13 @@ function color_field_field_info() {
       'default_formatter' => 'color_field_default_formatter',
       'property_type' => 'color_field_rgb',
     ),
+    'color_field_rgba' => array(
+      'label' => t('Color Field with alpha'),
+      'description' => t('Field using a rgba notation.'),
+      'default_widget' => 'color_field_plain_text',
+      'default_formatter' => 'color_field_default_formatter',
+      'property_type' => 'color_field_rgba',
+    ),
   );
 }
 
@@ -156,13 +163,13 @@ function color_field_field_widget_info() {
   if ($jquery_spectrum_color_picker_enable) {
     $widgets['color_field_spectrum_widget'] = array(
       'label' => t('Spectrum Color-Picker'),
-      'field types' => array('color_field_rgb'),
+      'field types' => array('color_field_rgb', 'color_field_rgba'),
     );
   }
 
   $widgets['color_field_plain_text'] = array(
-    'label' => t('Plain text (RGB value as #ffffff)'),
-    'field types' => array('color_field_rgb'),
+    'label' => t('Plain text (RGB value as #ffffff, RGBA as rgba(255, 255, 255, 1))'),
+    'field types' => array('color_field_rgb', 'color_field_rgba'),
   );
 
   return $widgets;
@@ -180,11 +187,22 @@ function color_field_field_widget_info() {
 function color_field_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
   foreach ($items as $delta => $item) {
     if (!empty($item['rgb'])) {
-      if (!preg_match('@^#[0-9a-fA-F]{6}$@', $item['rgb'])) {
-        $errors[$field['field_name']][$langcode][$delta][] = array(
-          'error' => 'color_field_invalid',
-          'message' => t('Color must be in the hexadecimal format #abcdef.'),
-        );
+      switch ($field['type']) {
+        case 'color_field_rgba':
+          if (!preg_match('@(^rgb\((\d+),\s*(\d+),\s*(\d+)\)$)|(^rgba\(\d{1,3}, ?\d{1,3}, ?\d{1,3}, ?[01](\.\d{1,2})?\)$)@', $item['rgb'])) {
+            $errors[$field['field_name']][$langcode][$delta][] = array(
+              'error' => 'color_field_invalid',
+              'message' => t('Color must be in the rgba format rgba(255, 255, 255, 0.99).'),
+            );
+          }
+          break;
+        default:
+          if (!preg_match('@^#[0-9a-fA-F]{6}$@', $item['rgb'])) {
+            $errors[$field['field_name']][$langcode][$delta][] = array(
+              'error' => 'color_field_invalid',
+              'message' => t('Color must be in the hexadecimal format #abcdef.'),
+            );
+          }
       }
     }
   }
@@ -323,11 +341,11 @@ function color_field_field_formatter_info() {
   return array(
     'color_field_default_formatter' => array(
       'label' => t('Plain text color'),
-      'field types' => array('color_field_rgb'),
+      'field types' => array('color_field_rgb', 'color_field_rgba'),
     ),
     'color_field_css_declaration' => array(
       'label' => t('CSS Declaration'),
-      'field types' => array('color_field_rgb'),
+      'field types' => array('color_field_rgb', 'color_field_rgba'),
       'settings' => array(
         'selector' => 'body',
         'property' => 'background-color',
@@ -557,13 +575,25 @@ function color_field_field_widget_form(&$form, &$form_state, $field, $instance,
       break;
 
     case 'color_field_plain_text':
-      $widget += array(
-        '#type' => 'textfield',
-        '#description' => t('Format #FFFFFF'),
-        '#default_value' => $value,
-        '#size' => 7,
-        '#maxlength' => 7,
-      );
+      switch ($field['type']) {
+        case 'color_field_rgba':
+          $widget += array(
+            '#type' => 'textfield',
+            '#description' => t('Format rgba(255, 255, 255, 0.99)'),
+            '#default_value' => $value,
+            '#size' => 25,
+            '#maxlength' => 25,
+          );
+          break;
+        default:
+          $widget += array(
+            '#type' => 'textfield',
+            '#description' => t('Format #FFFFFF'),
+            '#default_value' => $value,
+            '#size' => 7,
+            '#maxlength' => 7,
+          );
+      }
       break;
 
     case 'color_field_spectrum_widget':
@@ -578,6 +608,12 @@ function color_field_field_widget_form(&$form, &$form_state, $field, $instance,
       $settings['show_palette'] = (isset($field['settings']['show_palette']) && $field['settings']['show_palette'] == 1) ? TRUE : FALSE;
       $settings['show_palette_only'] = (isset($field['settings']['show_palette_only']) && $field['settings']['show_palette_only'] == 1) ? TRUE : FALSE;
       $settings['show_buttons'] = (isset($field['settings']['show_buttons']) && $field['settings']['show_buttons'] == 1) ? TRUE : FALSE;
+      $settings['preferred_format'] = 'hex';
+      $settings['show_alpha'] = 'false';
+      if ($field['type'] == 'color_field_rgba') {
+        $settings['preferred_format'] = 'rgb';
+        $settings['show_alpha'] = 'true';
+      }
 
       $default_colors = (isset($field['settings']['palette']) && $field['settings']['palette'] != '') ? $field['settings']['palette'] : '';
       preg_match_all("/#[0-9a-fA-F]{6}/", $default_colors, $default_colors, PREG_SET_ORDER);
@@ -585,12 +621,13 @@ function color_field_field_widget_form(&$form, &$form_state, $field, $instance,
         $settings['palette'][] = $color[0];
       }
 
+      $length = $field['type'] == 'color_field_rgba' ? 25 : 7;
       $widget += array(
         '#type' => 'textfield',
         '#description' => t('Format #FFFFFF'),
         '#default_value' => $value,
-        '#size' => 7,
-        '#maxlength' => 7,
+        '#size' => $length,
+        '#maxlength' => $length,
         '#attached' => array(
           // Add Spectrum color picker.
           'library' => array(array('color_field', 'spectrum')),
diff --git a/color_field_spectrum_color_picker/color_field_spectrum_color_picker.jquery.js b/color_field_spectrum_color_picker/color_field_spectrum_color_picker.jquery.js
index 77163c8..889ea3d 100755
--- a/color_field_spectrum_color_picker/color_field_spectrum_color_picker.jquery.js
+++ b/color_field_spectrum_color_picker/color_field_spectrum_color_picker.jquery.js
@@ -7,9 +7,9 @@
     attach: function (context) {
       $.each(Drupal.settings.color_field_spectrum, function (selector) {
         $('#' + this.id).spectrum({
-          preferredFormat: "hex",
+          preferredFormat: this.preferred_format,
           showInput: this.show_input,
-          showAlpha: false,
+          showAlpha: this.show_alpha,
           showInitial: true,
           showPalette: this.show_palette,
           showPaletteOnly: this.show_palette_only,
