diff --git a/objects/dib.c b/objects/dib.c
index 9fbb0cee54340dae935687c1dce295c3bfedfec9..17efa78ac69f6e1b99118bc6da0636cb3909918a 100644
--- a/objects/dib.c
+++ b/objects/dib.c
@@ -135,33 +135,39 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst,
                        const BITMAPINFO *info, UINT wUsage, DWORD dwRop )
 {
     DC *dc = DC_GetDCPtr( hdc );
+
     if(!dc) return FALSE;
 
+    if (widthDst == widthSrc && heightDst == heightSrc && dwRop == SRCCOPY) {
+       return SetDIBitsToDevice( hdc, xDst, yDst, widthDst, heightDst, 
+				 xSrc, ySrc, 0, info->bmiHeader.biHeight,
+				 bits, info, 0/*FIXME coloruse*/ );
+    }
+
     if(dc->funcs->pStretchDIBits)
     	   return dc->funcs->pStretchDIBits(dc, xDst, yDst, widthDst, 
 					    heightDst, xSrc, ySrc, widthSrc,
 					    heightSrc, bits, info, wUsage,
 					    dwRop);
     else { /* use StretchBlt32 */
-        HBITMAP hBitmap, hOldBitmap;
-	HDC hdcMem;
-    
-	hBitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT,
-				    bits, info, wUsage );
-	hdcMem = CreateCompatibleDC( hdc );
-	hOldBitmap = SelectObject( hdcMem, hBitmap );
-        /* Origin for DIBitmap is bottom left ! */
-        StretchBlt( hdc, xDst, yDst, widthDst, heightDst,
-                      hdcMem, xSrc, info->bmiHeader.biHeight - heightSrc - ySrc, 
-                      widthSrc, heightSrc, dwRop );
-	SelectObject( hdcMem, hOldBitmap );
-	DeleteDC( hdcMem );
-	DeleteObject( hBitmap );
-	return heightSrc;
+       HBITMAP hBitmap, hOldBitmap;
+       HDC hdcMem;
+       
+       hBitmap = CreateDIBitmap( hdc, &info->bmiHeader, CBM_INIT,
+				 bits, info, wUsage );
+       hdcMem = CreateCompatibleDC( hdc );
+       hOldBitmap = SelectObject( hdcMem, hBitmap );
+       /* Origin for DIBitmap is bottom left ! */
+       StretchBlt( hdc, xDst, yDst, widthDst, heightDst,
+		   hdcMem, xSrc, info->bmiHeader.biHeight - heightSrc - ySrc, 
+		   widthSrc, heightSrc, dwRop );
+       SelectObject( hdcMem, hOldBitmap );
+       DeleteDC( hdcMem );
+       DeleteObject( hBitmap );
     }
+    return heightSrc;
 }
 
-
 /***********************************************************************
  *           SetDIBits16    (GDI.440)
  */