Don't set ole32.dll to native. It won't help you with this app. Apply the patch below (patch -Np1 -i name_of_patch) and recompile > > diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c > index 587c7c7..89e8f1e 100644 > --- a/dlls/winex11.drv/dib.c > +++ b/dlls/winex11.drv/dib.c > @@ -4039,33 +4039,6 @@ INT CDECL X11DRV_SetDIBits( X11DRV_PDEVICE *physDev, HBITMAP hbitmap, UINT start > X11DRV_DIB_Lock( physBitmap, DIB_Status_GdiMod ); > result = X11DRV_DIB_SetImageBits( &descr ); > > - /* optimisation for the case where the input bits are in exactly the same > - * format as the internal representation and copying to the app bits is > - * cheap - saves a round trip to the X server */ > - if (descr.compression == BI_RGB && > - coloruse == DIB_RGB_COLORS && > - descr.infoBpp == ds.dsBm.bmBitsPixel && > - physBitmap->base && physBitmap->size < 65536) > - { > - unsigned int srcwidthb = ds.dsBm.bmWidthBytes; > - int dstwidthb = X11DRV_DIB_GetDIBWidthBytes( width, descr.infoBpp ); > - LPBYTE dbits = physBitmap->base, sbits = (LPBYTE)bits + (startscan * srcwidthb); > - int widthb; > - UINT y; > - > - TRACE("syncing compatible set bits to app bits\n"); > - if ((tmpheight < 0) ^ (ds.dsBmih.biHeight < 0)) > - { > - dbits += dstwidthb * (lines-1); > - dstwidthb = -dstwidthb; > - } > - X11DRV_DIB_DoProtectDIBSection( physBitmap, PAGE_READWRITE ); > - widthb = min(srcwidthb, abs(dstwidthb)); > - for (y = 0; y < lines; y++, dbits += dstwidthb, sbits += srcwidthb) > - memcpy(dbits, sbits, widthb); > - X11DRV_DIB_DoProtectDIBSection( physBitmap, PAGE_READONLY ); > - physBitmap->status = DIB_Status_InSync; > - } > X11DRV_DIB_Unlock( physBitmap, TRUE ); > > HeapFree(GetProcessHeap(), 0, descr.colorMap); >