http://bugs.winehq.org/show_bug.cgi?id=19393
--- Comment #5 from Roderick Colenbrander thunderbird2k@gmail.com 2009-07-21 16:35:47 --- Could you both try the following fix? There is a rounding error in coordinates and this (depending on the driver) should reduce or even completely eliminate the issue. The issue is that a bitmap with a height of 1 is stretched interpolated incorrectly (actually the bitmap is a part of a large bitmap and that is what causes the issues). Bitmaps with a width or height larger than 1 don't have issues. In case of 1x a special optimization can be added which can fix the issue completely.
diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c index 6d290ba..9b6fc2b 100644 --- a/dlls/winex11.drv/xrender.c +++ b/dlls/winex11.drv/xrender.c @@ -1724,9 +1724,9 @@ static void set_xrender_transformation(Picture src_pict, float xscale, float ysc { #ifdef HAVE_XRENDERSETPICTURETRANSFORM XTransform xform = {{ - { XDoubleToFixed(xscale), XDoubleToFixed(0), XDoubleToFixed(xoffset) }, - { XDoubleToFixed(0), XDoubleToFixed(yscale), XDoubleToFixed(yoffset) }, - { XDoubleToFixed(0), XDoubleToFixed(0), XDoubleToFixed(1) } + { XDoubleToFixed(256*xscale), XDoubleToFixed(0), XDoubleToFixed(xoffset) }, + { XDoubleToFixed(0), XDoubleToFixed(256*yscale), XDoubleToFixed(yoffset) }, + { XDoubleToFixed(0), XDoubleToFixed(0), XDoubleToFixed(256) } }};
pXRenderSetPictureTransform(gdi_display, src_pict, &xform);