x11drv: Clear new bitmaps if they don't contain any data.
diff --git a/dlls/gdi/tests/gdiobj.c b/dlls/gdi/tests/gdiobj.c
index ec4d2d4..4de266c 100644
--- a/dlls/gdi/tests/gdiobj.c
+++ b/dlls/gdi/tests/gdiobj.c
@@ -1034,9 +1034,7 @@
     memset(buf, 0xAA, sizeof(buf));
     ret = GetBitmapBits(hbmp, sizeof(buf), buf);
     ok(ret == bm.bmWidthBytes * bm.bmHeight, "%d != %d\n", ret, bm.bmWidthBytes * bm.bmHeight);
-todo_wine {
     ok(!memcmp(buf, buf_cmp, sizeof(buf)), "buffers do not match\n");
-}
 
     hbmp_old = SelectObject(hdc, hbmp_old);
     ok(hbmp_old == hbmp, "wrong old bitmap %p\n", hbmp_old);
diff --git a/dlls/x11drv/bitmap.c b/dlls/x11drv/bitmap.c
index b2e7718..060102f 100644
--- a/dlls/x11drv/bitmap.c
+++ b/dlls/x11drv/bitmap.c
@@ -146,7 +146,18 @@
     }
 
     if (bitmap.bmBits) /* Set bitmap bits */
+    {
         X11DRV_SetBitmapBits( hbitmap, bitmap.bmBits, bitmap.bmHeight * bitmap.bmWidthBytes );
+    }
+    else  /* else clear the bitmap */
+    {
+        wine_tsx11_lock();
+        XSetFunction( gdi_display, BITMAP_GC(physBitmap), GXclear );
+        XFillRectangle( gdi_display, physBitmap->pixmap, BITMAP_GC(physBitmap), 0, 0,
+                        bitmap.bmWidth, bitmap.bmHeight );
+        XSetFunction( gdi_display, BITMAP_GC(physBitmap), GXcopy );
+        wine_tsx11_unlock();
+    }
     return TRUE;
 }