diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 66cd03d..ec62370 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -2061,41 +2061,13 @@
 
 
 /***********************************************************************
- *           DIB_GetDIBWidthBytes
- *
- * Return the width of a DIB bitmap in bytes. DIB bitmap data is 32-bit aligned.
- */
-static int DIB_GetDIBWidthBytes( int width, int depth )
-{
-    int words;
-
-    switch(depth)
-    {
-    case 1:  words = (width + 31) / 32; break;
-    case 4:  words = (width + 7) / 8; break;
-    case 8:  words = (width + 3) / 4; break;
-    case 15:
-    case 16: words = (width + 1) / 2; break;
-    case 24: words = (width * 3 + 3)/4; break;
-
-    default:
-        WARN("(%d): Unsupported depth\n", depth );
-        /* fall through */
-    case 32:
-        words = width;
-        break;
-    }
-    return 4 * words;
-}
-
-/***********************************************************************
  *           DIB_GetDIBImageBytes
  *
  * Return the number of bytes used to hold the image in a DIB bitmap.
  */
 static int DIB_GetDIBImageBytes( int width, int height, int depth )
 {
-    return DIB_GetDIBWidthBytes( width, depth ) * abs( height );
+    return (((width * depth + 31) / 8) & ~3) * abs( height );
 }
 
 
diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index 46b3595..0441fd0 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -738,24 +738,7 @@
 
 static INT DIB_GetWidthBytes( int width, int bpp )
 {
-    int words;
-
-    switch (bpp)
-    {
-	case 1:  words = (width + 31) / 32; break;
-	case 4:  words = (width + 7) / 8; break;
-	case 8:  words = (width + 3) / 4; break;
-	case 15:
-	case 16: words = (width + 1) / 2; break;
-	case 24: words = (width * 3 + 3)/4; break;
-	case 32: words = width; break;
-
-        default:
-            trace("Unknown depth %d, please report.\n", bpp );
-            assert(0);
-            return -1;
-    }
-    return 4 * words;
+    return ((width * bpp + 31) / 8) & ~3;
 }
 
 static void check_bitmap_data(const char *bm_data, ULONG bm_data_size,
