diff --git a/objects/dib.c b/objects/dib.c
index d133f602b4c28a090b6bfdd64605e3cee1f9e5a6..9fbb0cee54340dae935687c1dce295c3bfedfec9 100644
--- a/objects/dib.c
+++ b/objects/dib.c
@@ -800,7 +800,7 @@ HBITMAP WINAPI CreateDIBitmap( HDC hdc, const BITMAPINFOHEADER *header,
 
     /* Check if we should create a monochrome or color bitmap. */
     /* We create a monochrome bitmap only if it has exactly 2  */
-    /* colors, which are either black or white, nothing else.  */
+    /* colors, which are black followed by white, nothing else.  */
     /* In all other cases, we create a color bitmap.           */
 
     if (bpp != 1) fColor = TRUE;
@@ -812,23 +812,29 @@ HBITMAP WINAPI CreateDIBitmap( HDC hdc, const BITMAPINFOHEADER *header,
         {
             RGBQUAD *rgb = data->bmiColors;
             DWORD col = RGB( rgb->rgbRed, rgb->rgbGreen, rgb->rgbBlue );
-            if ((col == RGB(0,0,0)) || (col == RGB(0xff,0xff,0xff)))
+
+	    /* Check if the first color of the colormap is black */ 
+	    if ((col == RGB(0,0,0)))
             {
                 rgb++;
                 col = RGB( rgb->rgbRed, rgb->rgbGreen, rgb->rgbBlue );
-                fColor = ((col != RGB(0,0,0)) && (col != RGB(0xff,0xff,0xff)));
+		/* If the second color is white, create a monochrome bitmap */
+                fColor =  (col != RGB(0xff,0xff,0xff));
             }
+	    /* Note : If the first color of the colormap is white 
+	       followed by black, we have to create a color bitmap. 
+	       If we don't the white will be displayed in black later on!*/ 
             else fColor = TRUE;
         }
         else if (data->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
         {
             RGBTRIPLE *rgb = ((BITMAPCOREINFO *)data)->bmciColors;
             DWORD col = RGB( rgb->rgbtRed, rgb->rgbtGreen, rgb->rgbtBlue );
-            if ((col == RGB(0,0,0)) || (col == RGB(0xff,0xff,0xff)))
+            if ((col == RGB(0,0,0)))
             {
                 rgb++;
                 col = RGB( rgb->rgbtRed, rgb->rgbtGreen, rgb->rgbtBlue );
-                fColor = ((col != RGB(0,0,0)) && (col != RGB(0xff,0xff,0xff)));
+                fColor = (col != RGB(0xff,0xff,0xff));
             }
             else fColor = TRUE;
         }