Shi Quan He (of Corel)
The implementation of StretchBlt in WINE does not use the foreground and
background color when a bitmap is copied from mono to mono.  This is
not the case in the actual implementation under Windows but MSDN did
not document it.

diff --git a/graphics/x11drv/bitblt.c b/graphics/x11drv/bitblt.c
index 396d363..50bc3dc 100644
--- a/graphics/x11drv/bitblt.c
+++ b/graphics/x11drv/bitblt.c
@@ -894,8 +894,21 @@
         if (!X11DRV_PALETTE_XPixelToPalette ||
             (dcDst->w.bitsPerPixel == 1))  /* monochrome -> monochrome */
         {
-            XCopyArea( display, physDevSrc->drawable, pixmap, gc,
-                       visRectSrc->left, visRectSrc->top, width, height, 0, 0);
+            if (dcDst->w.bitsPerPixel == 1)
+            {
+                /* MSDN says if StretchBlt must convert a bitmap from monochrome
+                   to color or vice versa, the forground and background color of
+                   the device context are used.  In fact, it also applies to the
+                   case when it is converted from mono to mono. */ 
+                XSetBackground( display, gc, physDevDst->textPixel );
+                XSetForeground( display, gc, physDevDst->backgroundPixel );
+                XCopyPlane( display, physDevSrc->drawable, pixmap, gc,
+                            visRectSrc->left, visRectSrc->top,
+                            width, height, 0, 0, 1);
+            }
+            else
+                XCopyArea( display, physDevSrc->drawable, pixmap, gc, visRectSrc
+                           ->left, visRectSrc->top, width, height, 0, 0);
         }
         else  /* color -> color */
         {