diff --git a/coders/bmp.c b/coders/bmp.c
index 6b31d60..cf61a30 100644
--- a/coders/bmp.c
+++ b/coders/bmp.c
@@ -840,9 +840,9 @@
     image->columns=(size_t) MagickAbsoluteValue(bmp_info.width);
     image->rows=(size_t) MagickAbsoluteValue(bmp_info.height);
     image->depth=bmp_info.bits_per_pixel <= 8 ? bmp_info.bits_per_pixel : 8;
-    if ((bmp_info.bits_per_pixel == 16) || (bmp_info.bits_per_pixel == 32))
-      image->alpha_trait=bmp_info.alpha_mask != 0 ? BlendPixelTrait :
-        UndefinedPixelTrait;
+    image->alpha_trait=(bmp_info.alpha_mask != 0) || 
+      ((bmp_info.compression == BI_RGB) && (bmp_info.bits_per_pixel == 32)) ? 
+      BlendPixelTrait : UndefinedPixelTrait;
     if ((bmp_info.number_colors != 0) || (bmp_info.bits_per_pixel < 16))
       {
         size_t
@@ -947,7 +947,8 @@
     */
     if (bmp_info.compression == BI_RGB)
       {
-        bmp_info.alpha_mask=0;
+        bmp_info.alpha_mask=image->alpha_trait == BlendPixelTrait ?
+          0xff000000L : 0L;
         bmp_info.red_mask=0x00ff0000U;
         bmp_info.green_mask=0x0000ff00U;
         bmp_info.blue_mask=0x000000ffU;