diff --git a/dlls/user/cursoricon.c b/dlls/user/cursoricon.c
index 197044513389ce37f5ab534a5068d6cbe4ef347d..310032caab64bf79993d169eaf9a836e2c2c575d 100644
--- a/dlls/user/cursoricon.c
+++ b/dlls/user/cursoricon.c
@@ -1831,20 +1831,31 @@ HICON WINAPI CreateIconIndirect(PICONINFO iconinfo)
         /* If we are creating an icon, the hotspot is unused */
         if (iconinfo->fIcon)
         {
-          info->ptHotSpot.x   = ICON_HOTSPOT;
-          info->ptHotSpot.y   = ICON_HOTSPOT;
+            info->ptHotSpot.x   = ICON_HOTSPOT;
+            info->ptHotSpot.y   = ICON_HOTSPOT;
         }
         else
         {
-          info->ptHotSpot.x   = iconinfo->xHotspot;
-          info->ptHotSpot.y   = iconinfo->yHotspot;
+            info->ptHotSpot.x   = iconinfo->xHotspot;
+            info->ptHotSpot.y   = iconinfo->yHotspot;
         }
 
-        info->nWidth        = bmpAnd.bmWidth;
-        info->nHeight       = iconinfo->hbmColor ? bmpAnd.bmHeight : (bmpAnd.bmHeight / 2);
-        info->nWidthBytes   = bmpAnd.bmWidthBytes;
-        info->bPlanes       = bmpAnd.bmPlanes;
-        info->bBitsPerPixel = bmpAnd.bmBitsPixel;
+        if (iconinfo->hbmColor)
+        {
+            info->nWidth        = bmpXor.bmWidth;
+            info->nHeight       = bmpXor.bmHeight;
+            info->nWidthBytes   = bmpXor.bmWidthBytes;
+            info->bPlanes       = bmpXor.bmPlanes;
+            info->bBitsPerPixel = bmpXor.bmBitsPixel;
+        }
+        else
+        {
+            info->nWidth        = bmpAnd.bmWidth;
+            info->nHeight       = bmpAnd.bmHeight / 2;
+            info->nWidthBytes   = bmpAnd.bmWidthBytes;
+            info->bPlanes       = bmpAnd.bmPlanes;
+            info->bBitsPerPixel = bmpAnd.bmBitsPixel;
+        }
 
         /* Transfer the bitmap bits to the CURSORICONINFO structure */