diff --git a/Magick++/demo/button.cpp b/Magick++/demo/button.cpp
index 858a48b..118cdfc 100644
--- a/Magick++/demo/button.cpp
+++ b/Magick++/demo/button.cpp
@@ -73,6 +73,8 @@
     button.borderColor( border );
     button.frame( "6x6+3+3" );
 
+    button.depth( 8 );
+
     // Quantize to desired colors
     // button.quantizeTreeDepth(8);
     button.quantizeDither(false);
diff --git a/Magick++/demo/demo.cpp b/Magick++/demo/demo.cpp
index 86cd48d..e9cb4b1 100644
--- a/Magick++/demo/demo.cpp
+++ b/Magick++/demo/demo.cpp
@@ -498,9 +498,11 @@
       montage_image.composite( logo, placement, OverCompositeOp );
     }
 
+    for_each( montage.begin(), montage.end(), depthImage(8) );
+    for_each( montage.begin(), montage.end(), matteImage( false ) );
+    for_each( montage.begin(), montage.end(), compressTypeImage( RLECompression) );
+
     cout << "Writing image \"demo_out.miff\" ..." << endl;
-    montage_image.matte( false );
-    montage_image.compressType( RLECompression );
     writeImages(montage.begin(),montage.end(),"demo_out.miff");
 
     // Uncomment following lines to display image to screen
diff --git a/Magick++/demo/gravity.cpp b/Magick++/demo/gravity.cpp
index b0f0e7b..d2468ad 100644
--- a/Magick++/demo/gravity.cpp
+++ b/Magick++/demo/gravity.cpp
@@ -39,6 +39,7 @@
     list<Image> animation;
 
     Image base( Geometry(600,600), Color("white") );
+    base.depth(8);
     base.strokeColor("#600");
     base.fillColor(Color());
     base.draw( DrawableLine( 300,100, 300,500 ) );
diff --git a/Magick++/demo/piddle.cpp b/Magick++/demo/piddle.cpp
index f189587..ec6007f 100644
--- a/Magick++/demo/piddle.cpp
+++ b/Magick++/demo/piddle.cpp
@@ -155,6 +155,7 @@
     //     image.write( "piddle.mvg" );
 
     cout << "Writing image \"piddle_out.miff\" ..." << endl;
+    image.depth( 8 );
     image.compressType( RLECompression );
     image.write( "piddle_out.miff" );
     cout << "Writing MVG metafile \"piddle_out.mvg\" ..." << endl;
diff --git a/Magick++/demo/shapes.cpp b/Magick++/demo/shapes.cpp
index e472b08..f2c9616 100644
--- a/Magick++/demo/shapes.cpp
+++ b/Magick++/demo/shapes.cpp
@@ -101,6 +101,7 @@
     //
 
     cout << "Writing image \"shapes_out.miff\" ..." << endl;
+    image.depth( 8 );
     image.compressType( RLECompression );
     image.write( "shapes_out.miff" );
 
diff --git a/coders/rgb.c b/coders/rgb.c
index 519b2f5..8398708 100644
--- a/coders/rgb.c
+++ b/coders/rgb.c
@@ -186,7 +186,13 @@
       image->matte=MagickTrue;
       channels=4;
     }
-  if (LocaleCompare(image_info->magick,"RGBO") == 0)
+  else if (LocaleCompare(image_info->magick,"BGRA") == 0)
+    {
+      quantum_type=BGRAQuantum;
+      image->matte=MagickTrue;
+      channels=4;
+    }
+  else if (LocaleCompare(image_info->magick,"RGBO") == 0)
     {
       quantum_type=RGBOQuantum;
       image->matte=MagickTrue;
@@ -684,6 +690,15 @@
   entry->description=ConstantString("Raw blue, green, and red samples");
   entry->module=ConstantString("RGB");
   (void) RegisterMagickInfo(entry);
+  entry=SetMagickInfo("BGRA");
+  entry->decoder=(DecodeImageHandler *) ReadRGBImage;
+  entry->encoder=(EncodeImageHandler *) WriteRGBImage;
+  entry->raw=MagickTrue;
+  entry->endian_support=MagickTrue;
+  entry->format_type=ExplicitFormatType;
+  entry->description=ConstantString("Raw blue, green, red and alpha samples");
+  entry->module=ConstantString("RGB");
+  (void) RegisterMagickInfo(entry);
   entry=SetMagickInfo("RGBA");
   entry->decoder=(DecodeImageHandler *) ReadRGBImage;
   entry->encoder=(EncodeImageHandler *) WriteRGBImage;
@@ -730,6 +745,7 @@
   (void) UnregisterMagickInfo("RGBO");
   (void) UnregisterMagickInfo("RGBA");
   (void) UnregisterMagickInfo("BGR");
+  (void) UnregisterMagickInfo("BGRA");
   (void) UnregisterMagickInfo("BRG");
   (void) UnregisterMagickInfo("GBR");
   (void) UnregisterMagickInfo("GRB");
diff --git a/magick/quantum.c b/magick/quantum.c
index 8792224..a55f195 100644
--- a/magick/quantum.c
+++ b/magick/quantum.c
@@ -306,6 +306,7 @@
     case IndexAlphaQuantum: packet_size=2; break;
     case RGBQuantum: packet_size=3; break;
     case RGBAQuantum: packet_size=4; break;
+    case BGRAQuantum: packet_size=4; break;
     case RGBOQuantum: packet_size=4; break;
     case CMYKQuantum: packet_size=4; break;
     case CMYKAQuantum: packet_size=5; break;
diff --git a/magick/quantum.h b/magick/quantum.h
index 685ed11..8727bf0 100644
--- a/magick/quantum.h
+++ b/magick/quantum.h
@@ -64,6 +64,7 @@
   OpacityQuantum,
   RedQuantum,
   RGBAQuantum,
+  BGRAQuantum,
   RGBOQuantum,
   RGBQuantum,
   YellowQuantum,
diff --git a/wand/drawtest.c b/wand/drawtest.c
index 21f47fa..a7cf557 100644
--- a/wand/drawtest.c
+++ b/wand/drawtest.c
@@ -440,6 +440,18 @@
   if (status == MagickFalse)
     ThrowWandException(canvas);
   /*
+    Set pixel depth to 8.
+  */
+  status=MagickSetImageDepth(canvas,8);
+  if (status == MagickFalse)
+    ThrowWandException(canvas);
+  /*
+    Set RLE compression.
+  */
+  status=MagickSetImageCompression(canvas,RLECompression);
+  if (status == MagickFalse)
+    ThrowWandException(canvas);
+  /*
     Save image to file.
   */
   status=MagickWriteImage(canvas,filename);
diff --git a/wand/wandtest.c b/wand/wandtest.c
index 0866350..f33b1ce 100644
--- a/wand/wandtest.c
+++ b/wand/wandtest.c
@@ -564,6 +564,13 @@
   status=MagickResizeImage(magick_wand,50,50,UndefinedFilter,1.0);
   if (status == MagickFalse)
     ThrowAPIException(magick_wand);
+  MagickResetIterator(magick_wand);
+  while (MagickNextImage(magick_wand) != False)
+  {
+    MagickSetImageDepth(magick_wand,8);
+    MagickSetImageCompression(magick_wand,RLECompression);
+  }
+  MagickResetIterator(magick_wand);
   (void) MagickSetIteratorIndex(magick_wand,4);
   (void) fprintf(stdout,"Utilitize pixel iterator to draw diagonal...\n");
   iterator=NewPixelIterator(magick_wand);