comctl32: Use the appropriate color format when loading a DIB in ImageList_LoadImageW.
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 9396b95..2e1581e 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -1907,8 +1907,11 @@
     }
 
     if (uType == IMAGE_BITMAP) {
-        BITMAP bmp;
-        GetObjectW (handle, sizeof(BITMAP), &bmp);
+        DIBSECTION dib;
+        UINT color;
+
+        if (GetObjectW (handle, sizeof(dib), &dib) == sizeof(BITMAP)) color = ILC_COLOR;
+        else color = dib.dsBm.bmBitsPixel;
 
         /* To match windows behavior, if cx is set to zero and
          the flag DI_DEFAULTSIZE is specified, cx becomes the
@@ -1919,13 +1922,12 @@
             if (uFlags & DI_DEFAULTSIZE)
                 cx = GetSystemMetrics (SM_CXICON);
             else
-                cx = bmp.bmHeight;
+                cx = dib.dsBm.bmHeight;
         }
 
-        nImageCount = bmp.bmWidth / cx;
+        nImageCount = dib.dsBm.bmWidth / cx;
 
-        himl = ImageList_Create (cx, bmp.bmHeight, ILC_MASK | ILC_COLOR,
-                                 nImageCount, cGrow);
+        himl = ImageList_Create (cx, dib.dsBm.bmHeight, ILC_MASK | color, nImageCount, cGrow);
         if (!himl) {
             DeleteObject (handle);
             return NULL;