diff -Naur xorg-server-1.6.0.old/hw/xfree86/modes/xf86Rotate.c xorg-server-1.6.0/hw/xfree86/modes/xf86Rotate.c --- xorg-server-1.6.0.old/hw/xfree86/modes/xf86Rotate.c 2009-02-25 11:12:12.000000000 -0800 +++ xorg-server-1.6.0/hw/xfree86/modes/xf86Rotate.c 2009-03-20 01:55:51.000000000 -0700 @@ -72,6 +72,15 @@ #define toF(x) ((float) (x) / 65536.0f) + +#define TRANSFORM_BOUNDS_WITH_EXTENTS(matrix,bounds) \ + { \ + (bounds)->x2--; (bounds)->y2--; \ + pixman_f_transform_bounds((matrix), (bounds)); \ + (bounds)->x2++; (bounds)->y2++; \ + } + + static void xf86RotateCrtcRedisplay (xf86CrtcPtr crtc, RegionPtr region) { @@ -132,7 +141,7 @@ dst_box.x2 += crtc->filter_width >> 1; dst_box.y1 -= crtc->filter_height >> 1; dst_box.y2 += crtc->filter_height >> 1; - pixman_f_transform_bounds (&crtc->f_framebuffer_to_crtc, &dst_box); + TRANSFORM_BOUNDS_WITH_EXTENTS (&crtc->f_framebuffer_to_crtc, &dst_box); CompositePicture (PictOpSrc, src, NULL, dst, dst_box.x1, dst_box.y1, 0, 0, dst_box.x1, dst_box.y1, @@ -519,7 +528,7 @@ crtc->bounds.x2 = crtc->mode.HDisplay; crtc->bounds.y1 = 0; crtc->bounds.y2 = crtc->mode.VDisplay; - pixman_f_transform_bounds (&f_crtc_to_fb, &crtc->bounds); + TRANSFORM_BOUNDS_WITH_EXTENTS (&f_crtc_to_fb, &crtc->bounds); if (damage) xf86CrtcDamageShadow (crtc);