diff --git a/mozilla/gfx/src/gtk/nsDrawingSurfaceGTK.cpp b/mozilla/gfx/src/gtk/nsDrawingSurfaceGTK.cpp index a6d89e2e434..0bf1b2be91b 100644 --- a/mozilla/gfx/src/gtk/nsDrawingSurfaceGTK.cpp +++ b/mozilla/gfx/src/gtk/nsDrawingSurfaceGTK.cpp @@ -174,7 +174,10 @@ NS_IMETHODIMP nsDrawingSurfaceGTK :: Lock(PRInt32 aX, PRInt32 aY, *aBits = GDK_IMAGE_XIMAGE(mImage)->data; - *aWidthBytes = aWidth*(mImage->bpp >> 3); + // Use GDK_IMAGE_XIMAGE(mImage)->bits_per_pixel instead of mImage->bpp + // since, although bpp is documented as *bytes* per pixel, GDK1 sometimes + // set it as *bits* per pixel. + *aWidthBytes = aWidth * ((GDK_IMAGE_XIMAGE(mImage)->bits_per_pixel + 7) / 8); *aStride = GDK_IMAGE_XIMAGE(mImage)->bytes_per_line; #ifdef CHEAP_PERFORMANCE_MEASUREMENT