diff --git a/MagickCore/image.c b/MagickCore/image.c
index 41f7fb3..c3163b1 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -2101,26 +2101,26 @@
     {
       case RedPixelChannel:
       {
-        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],
-          beta,(double) p->red,alpha));
+        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],beta,
+          (double) p->red,alpha));
         break;
       }
       case GreenPixelChannel:
       {
-        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],
-          beta,(double) p->green,alpha));
+        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],beta,
+          (double) p->green,alpha));
         break;
       }
       case BluePixelChannel:
       {
-        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],
-          beta,(double) p->blue,alpha));
+        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],beta,
+          (double) p->blue,alpha));
         break;
       }
       case BlackPixelChannel:
       {
-        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],
-          beta,(double) p->black,alpha));
+        composite[i]=ClampToQuantum(gamma*MagickOver_((double) q[i],beta,
+          (double) p->black,alpha));
         break;
       }
       case AlphaPixelChannel:
diff --git a/MagickCore/image.h b/MagickCore/image.h
index 1075995..058645f 100644
--- a/MagickCore/image.h
+++ b/MagickCore/image.h
@@ -24,8 +24,8 @@
 
 #include <MagickCore/color.h>
 
-#define OpaqueAlpha  (QuantumRange)
-#define TransparentAlpha  ((Quantum) 0UL)
+#define OpaqueAlpha  ((Quantum) QuantumRange)
+#define TransparentAlpha  ((Quantum) 0)
 
 typedef enum
 {
@@ -44,6 +44,13 @@
 
 typedef enum
 {
+  UndefinedAlpha,
+  InactiveAlpha,
+  ActiveAlpha
+} AlphaChannelState;
+
+typedef enum
+{
   UndefinedType,
   BilevelType,
   GrayscaleType,
@@ -273,6 +280,9 @@
   MagickBooleanType
     mask;
 
+  AlphaChannelState
+    alpha;
+
   size_t
     number_channels,
     number_meta_channels,
diff --git a/MagickCore/option.c b/MagickCore/option.c
index 077f7a1..449ed00 100644
--- a/MagickCore/option.c
+++ b/MagickCore/option.c
@@ -90,7 +90,7 @@
     { "Start", LeftAlign, UndefinedOptionFlag, MagickFalse },
     { (char *) NULL, UndefinedAlign, UndefinedOptionFlag, MagickFalse }
   },
-  AlphaOptions[] =
+  AlphaChannelOptions[] =
   {
     { "Undefined", UndefinedAlphaChannel, UndefinedOptionFlag, MagickTrue },
     { "Activate", ActivateAlphaChannel, UndefinedOptionFlag, MagickFalse },
@@ -108,6 +108,13 @@
     { "Transparent", TransparentAlphaChannel, UndefinedOptionFlag, MagickFalse },
     { (char *) NULL, UndefinedAlphaChannel, UndefinedOptionFlag, MagickFalse }
   },
+  AlphaStateOptions[] =
+  {
+    { "Undefined", UndefinedAlpha, UndefinedOptionFlag, MagickTrue },
+    { "Active", ActiveAlpha, UndefinedOptionFlag, MagickFalse },
+    { "Inactive", InactiveAlpha, UndefinedOptionFlag, MagickFalse },
+    { (char *) NULL, MagickFalse, UndefinedOptionFlag, MagickFalse }
+  },
   BooleanOptions[] =
   {
     { "False", MagickFalse, UndefinedOptionFlag, MagickFalse },
@@ -1193,7 +1200,7 @@
   ListOptions[] =
   {
     { "Align", MagickAlignOptions, UndefinedOptionFlag, MagickFalse },
-    { "Alpha", MagickAlphaOptions, UndefinedOptionFlag, MagickFalse },
+    { "Alpha", MagickAlphaChannelOptions, UndefinedOptionFlag, MagickFalse },
     { "Boolean", MagickBooleanOptions, UndefinedOptionFlag, MagickFalse },
     { "Channel", MagickChannelOptions, UndefinedOptionFlag, MagickFalse },
     { "Class", MagickClassOptions, UndefinedOptionFlag, MagickFalse },
@@ -1642,7 +1649,8 @@
   switch (option)
   {
     case MagickAlignOptions: return(AlignOptions);
-    case MagickAlphaOptions: return(AlphaOptions);
+    case MagickAlphaChannelOptions: return(AlphaChannelOptions);
+    case MagickAlphaStateOptions: return(AlphaStateOptions);
     case MagickBooleanOptions: return(BooleanOptions);
     case MagickChannelOptions: return(ChannelOptions);
     case MagickClassOptions: return(ClassOptions);
diff --git a/MagickCore/option.h b/MagickCore/option.h
index aa75044..3b1a872 100644
--- a/MagickCore/option.h
+++ b/MagickCore/option.h
@@ -26,7 +26,8 @@
 {
   MagickUndefinedOptions = -1,
   MagickAlignOptions = 0,
-  MagickAlphaOptions,
+  MagickAlphaChannelOptions,
+  MagickAlphaStateOptions,
   MagickBooleanOptions,
   MagickChannelOptions,
   MagickClassOptions,
diff --git a/MagickWand/animate.c b/MagickWand/animate.c
index 2912fa2..a8f1a5c 100644
--- a/MagickWand/animate.c
+++ b/MagickWand/animate.c
@@ -479,7 +479,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowAnimateException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowAnimateException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index b61b394..f2988cd 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -348,7 +348,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowCompareException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowCompareException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/composite.c b/MagickWand/composite.c
index 830b4b0..08429ca 100644
--- a/MagickWand/composite.c
+++ b/MagickWand/composite.c
@@ -554,7 +554,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowCompositeException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowCompositeException(OptionError,
                 "UnrecognizedAlphaChannelType",argv[i]);
diff --git a/MagickWand/convert.c b/MagickWand/convert.c
index b36f0cd..30eec2b 100644
--- a/MagickWand/convert.c
+++ b/MagickWand/convert.c
@@ -666,7 +666,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowConvertException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowConvertException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/display.c b/MagickWand/display.c
index 629001d..1d157d8 100644
--- a/MagickWand/display.c
+++ b/MagickWand/display.c
@@ -692,7 +692,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowDisplayException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowDisplayException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/identify.c b/MagickWand/identify.c
index 95f5c4d..8289fe3 100644
--- a/MagickWand/identify.c
+++ b/MagickWand/identify.c
@@ -367,7 +367,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowIdentifyException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowIdentifyException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 376529c..df24922 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -796,7 +796,7 @@
               alpha_type;
 
             (void) SyncImageSettings(mogrify_info,*image,exception);
-            alpha_type=(AlphaChannelType) ParseCommandOption(MagickAlphaOptions,
+            alpha_type=(AlphaChannelType) ParseCommandOption(MagickAlphaChannelOptions,
               MagickFalse,argv[i+1]);
             (void) SetImageAlphaChannel(*image,alpha_type,exception);
             break;
@@ -3824,7 +3824,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowMogrifyException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/montage.c b/MagickWand/montage.c
index 8a32145..d21dcb6 100644
--- a/MagickWand/montage.c
+++ b/MagickWand/montage.c
@@ -470,7 +470,7 @@
             i++;
             if (i == (ssize_t) argc)
               ThrowMontageException(OptionError,"MissingArgument",option);
-            type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+            type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
             if (type < 0)
               ThrowMontageException(OptionError,"UnrecognizedAlphaChannelType",
                 argv[i]);
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index 6f6d378..8558b99 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -1754,7 +1754,7 @@
         }
       if (LocaleCompare("alpha",option+1) == 0)
         {
-          parse=ParseCommandOption(MagickAlphaOptions,MagickFalse,arg1);
+          parse=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,arg1);
           if (parse < 0)
             CLIWandExceptArgBreak(OptionError,"UnrecognizedAlphaChannelType",
                  option,arg1);
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index 9870720..a685424 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -1103,7 +1103,7 @@
         }
       if (LocaleCompare(attribute,"alpha") == 0)
         {
-          sp=SvPOK(sval) ? ParseCommandOption(MagickAlphaOptions,MagickFalse,
+          sp=SvPOK(sval) ? ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,
             SvPV(sval,na)) : SvIV(sval);
           if (sp < 0)
             {
diff --git a/coders/msl.c b/coders/msl.c
index 82c7c9b..1944058 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -7949,7 +7949,7 @@
           ssize_t
             alpha;
 
-          alpha=ParseCommandOption(MagickAlphaOptions,MagickFalse,value);
+          alpha=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,value);
           if (alpha < 0)
             ThrowMSLException(OptionError,"UnrecognizedType",value);
           if (image != (Image *) NULL)