kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0001-Resolves-tdf-95962-incorrect-scanline-stride.patch

a9add1
From beaba7e2e7a3248cbe87870c84b2c0df0a25503d Mon Sep 17 00:00:00 2001
a9add1
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
a9add1
Date: Wed, 25 Nov 2015 10:32:33 +0000
a9add1
Subject: [PATCH] Resolves: tdf#95962 incorrect scanline stride
a9add1
MIME-Version: 1.0
a9add1
Content-Type: text/plain; charset=UTF-8
a9add1
Content-Transfer-Encoding: 8bit
a9add1
a9add1
gtk3: it's the *Original* device we care about, not the temp clip hack devices
a9add1
a9add1
Change-Id: I2ac61cd2a99da25122165af692154fdbc2ac6d2e
a9add1
(cherry picked from commit 872c1b7654510daa4a6974150490623745d931bf)
a9add1
a9add1
we were reusing the stride of the surface we were cloning,
a9add1
but the new surface has a different underlying size.
a9add1
a9add1
remove the custom stride argument and just change our stride
a9add1
calculation to use the same scheme that cairo and GDI uses, which
a9add1
remove another platform/drawing-system variable
a9add1
a9add1
Reviewed-on: https://gerrit.libreoffice.org/20149
a9add1
Tested-by: Jenkins <ci@libreoffice.org>
a9add1
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
a9add1
Tested-by: Caolán McNamara <caolanm@redhat.com>
a9add1
(cherry picked from commit 9b52b8999be86e5c6e5f5901b2640b16f08a2323)
a9add1
a9add1
Change-Id: I257dac9757b121642e9ccfde7db0911edc9f3fb1
a9add1
---
a9add1
 basebmp/source/bitmapdevice.cxx          | 25 +++++++------------------
a9add1
 basebmp/test/basictest.cxx               | 30 +++++++++++++-----------------
a9add1
 basebmp/test/bmpmasktest.cxx             | 24 +++++++-----------------
a9add1
 basebmp/test/bmptest.cxx                 | 12 ++++--------
a9add1
 basebmp/test/cliptest.cxx                | 12 ++++--------
a9add1
 basebmp/test/filltest.cxx                |  6 ++----
a9add1
 basebmp/test/linetest.cxx                | 12 ++++--------
a9add1
 basebmp/test/masktest.cxx                |  9 +++------
a9add1
 basebmp/test/polytest.cxx                |  6 ++----
a9add1
 include/basebmp/bitmapdevice.hxx         |  9 +++------
a9add1
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx |  2 +-
a9add1
 vcl/headless/svpbmp.cxx                  |  6 ++----
a9add1
 vcl/headless/svpframe.cxx                |  3 +--
a9add1
 vcl/headless/svpgdi.cxx                  | 31 ++++++++++++++++---------------
a9add1
 vcl/headless/svptextrender.cxx           |  2 +-
a9add1
 vcl/headless/svpvd.cxx                   |  7 +++----
a9add1
 vcl/qa/cppunit/BitmapTest.cxx            | 15 +++++----------
a9add1
 vcl/unx/gtk/window/gtksalframe.cxx       |  3 +--
a9add1
 18 files changed, 79 insertions(+), 135 deletions(-)
a9add1
a9add1
diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx
a9add1
index 04d4892..1517f05 100644
a9add1
--- a/basebmp/source/bitmapdevice.cxx
a9add1
+++ b/basebmp/source/bitmapdevice.cxx
a9add1
@@ -1956,7 +1956,6 @@ namespace
a9add1
 BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&                  rSize,
a9add1
                                                    bool                                       bTopDown,
a9add1
                                                    Format                                     nScanlineFormat,
a9add1
-                                                   sal_Int32                                  nScanlineStride,
a9add1
                                                    boost::shared_array< sal_uInt8 >           pMem,
a9add1
                                                    PaletteMemorySharedVector                  pPal,
a9add1
                                                    const basegfx::B2IBox*                     pSubset,
a9add1
@@ -1977,6 +1976,8 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
a9add1
         return BitmapDeviceSharedPtr();
a9add1
     }
a9add1
 
a9add1
+    sal_Int32 nScanlineStride = getBitmapDeviceStrideForWidth(nScanlineFormat, rSize.getX());
a9add1
+
a9add1
     // factor in bottom-up scanline order case
a9add1
     nScanlineStride *= bTopDown ? 1 : -1;
a9add1
 
a9add1
@@ -2139,14 +2140,13 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
a9add1
 BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector&                  rSize,
a9add1
                                               bool                                       bTopDown,
a9add1
                                               Format                                     nScanlineFormat,
a9add1
-                                              sal_Int32                                  nScanlineStride,
a9add1
                                               boost::shared_array< sal_uInt8 >           pMem,
a9add1
                                               PaletteMemorySharedVector                  pPal,
a9add1
                                               const basegfx::B2IBox*                     pSubset,
a9add1
                                               const IBitmapDeviceDamageTrackerSharedPtr& rDamage,
a9add1
                                               bool bBlack = true)
a9add1
 {
a9add1
-    BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, bTopDown, nScanlineFormat, nScanlineStride, pMem, pPal, pSubset, rDamage, bBlack ) );
a9add1
+    BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, bTopDown, nScanlineFormat, pMem, pPal, pSubset, rDamage, bBlack ) );
a9add1
 
a9add1
 #ifdef SAL_LOG_INFO
a9add1
     std::ostringstream subset;
a9add1
@@ -2172,24 +2172,20 @@ sal_Int32 getBitmapDeviceStrideForWidth(Format nScanlineFormat, sal_Int32 nWidth
a9add1
     // round up to full 8 bit, divide by 8
a9add1
     sal_Int32 nScanlineStride = (nWidth*nBitsPerPixel + 7) >> 3;
a9add1
 
a9add1
-    // rounded up to next full power-of-two number of bytes
a9add1
-    const sal_uInt32 bytesPerPixel = nextPow2(
a9add1
-        (bitsPerPixel[nScanlineFormat] + 7) >> 3);
a9add1
+    // pixman (cairo) and GDI (windows) pad to multiples of 32bits
a9add1
+    // so do the same to be easily compatible
a9add1
+    nScanlineStride = (nScanlineStride + 3) & ~0x3;
a9add1
 
a9add1
-    // now make nScanlineStride a multiple of bytesPerPixel
a9add1
-    nScanlineStride = (nScanlineStride + bytesPerPixel - 1) / bytesPerPixel * bytesPerPixel;
a9add1
     return nScanlineStride;
a9add1
 }
a9add1
 
a9add1
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
a9add1
                                           bool                      bTopDown,
a9add1
-                                          Format                    nScanlineFormat,
a9add1
-                                          sal_Int32                 nScanlineStride )
a9add1
+                                          Format                    nScanlineFormat )
a9add1
 {
a9add1
     return createBitmapDeviceImpl( rSize,
a9add1
                                    bTopDown,
a9add1
                                    nScanlineFormat,
a9add1
-                                   nScanlineStride,
a9add1
                                    boost::shared_array< sal_uInt8 >(),
a9add1
                                    PaletteMemorySharedVector(),
a9add1
                                    NULL,
a9add1
@@ -2199,13 +2195,11 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
a9add1
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize,
a9add1
                                           bool                             bTopDown,
a9add1
                                           Format                           nScanlineFormat,
a9add1
-                                          sal_Int32                        nScanlineStride,
a9add1
                                           const PaletteMemorySharedVector& rPalette )
a9add1
 {
a9add1
     return createBitmapDeviceImpl( rSize,
a9add1
                                    bTopDown,
a9add1
                                    nScanlineFormat,
a9add1
-                                   nScanlineStride,
a9add1
                                    boost::shared_array< sal_uInt8 >(),
a9add1
                                    rPalette,
a9add1
                                    NULL,
a9add1
@@ -2215,14 +2209,12 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize
a9add1
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize,
a9add1
                                           bool                             bTopDown,
a9add1
                                           Format                           nScanlineFormat,
a9add1
-                                          sal_Int32                        nScanlineStride,
a9add1
                                           const RawMemorySharedArray&      rMem,
a9add1
                                           const PaletteMemorySharedVector& rPalette )
a9add1
 {
a9add1
     return createBitmapDeviceImpl( rSize,
a9add1
                                    bTopDown,
a9add1
                                    nScanlineFormat,
a9add1
-                                   nScanlineStride,
a9add1
                                    rMem,
a9add1
                                    rPalette,
a9add1
                                    NULL,
a9add1
@@ -2235,7 +2227,6 @@ BitmapDeviceSharedPtr createClipDevice( const basegfx::B2IVector&        rSize )
a9add1
              createBitmapDeviceImpl( rSize,
a9add1
                                      false, /* bTopDown */
a9add1
                                      basebmp::FORMAT_ONE_BIT_MSB_GREY,
a9add1
-                                     getBitmapDeviceStrideForWidth(basebmp::FORMAT_ONE_BIT_MSB_GREY, rSize.getX()),
a9add1
                                      boost::shared_array< sal_uInt8 >(),
a9add1
                                      PaletteMemorySharedVector(),
a9add1
                                      NULL,
a9add1
@@ -2251,7 +2242,6 @@ BitmapDeviceSharedPtr subsetBitmapDevice( const BitmapDeviceSharedPtr& rProto,
a9add1
     return createBitmapDeviceImpl( rProto->getSize(),
a9add1
                                    rProto->isTopDown(),
a9add1
                                    rProto->getScanlineFormat(),
a9add1
-                                   rProto->getScanlineStride(),
a9add1
                                    rProto->getBuffer(),
a9add1
                                    rProto->getPalette(),
a9add1
                                    &rSubset,
a9add1
@@ -2264,7 +2254,6 @@ BitmapDeviceSharedPtr cloneBitmapDevice( const basegfx::B2IVector&    rSize,
a9add1
     return createBitmapDeviceImpl( rSize,
a9add1
                                    rProto->isTopDown(),
a9add1
                                    rProto->getScanlineFormat(),
a9add1
-                                   rProto->getScanlineStride(),
a9add1
                                    boost::shared_array< sal_uInt8 >(),
a9add1
                                    rProto->getPalette(),
a9add1
                                    NULL,
a9add1
diff --git a/basebmp/test/basictest.cxx b/basebmp/test/basictest.cxx
a9add1
index 293fbe5..671320d 100644
a9add1
--- a/basebmp/test/basictest.cxx
a9add1
+++ b/basebmp/test/basictest.cxx
a9add1
@@ -83,16 +83,19 @@ public:
a9add1
         basegfx::B2ISize       aSize2(aSize);
a9add1
         BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
a9add1
                                                            true,
a9add1
-                                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
a9add1
+                                                           FORMAT_ONE_BIT_MSB_PAL
a9add1
+                                                           ) );
a9add1
         CPPUNIT_ASSERT_MESSAGE("right size",
a9add1
                                pDevice->getSize() == aSize2 );
a9add1
         CPPUNIT_ASSERT_MESSAGE("Top down format",
a9add1
                                pDevice->isTopDown() );
a9add1
         CPPUNIT_ASSERT_MESSAGE("Scanline format",
a9add1
                                pDevice->getScanlineFormat() == FORMAT_ONE_BIT_MSB_PAL );
a9add1
+        sal_Int32 nExpectedStride = (aSize2.getY() + 7)/8;
a9add1
+        sal_Int32 nAlign = sizeof(sal_uInt32);
a9add1
+        nExpectedStride = ((nExpectedStride + nAlign-1) / nAlign) * nAlign;
a9add1
         CPPUNIT_ASSERT_MESSAGE("Scanline len",
a9add1
-                               pDevice->getScanlineStride() == (aSize2.getY() + 7)/8 );
a9add1
+                               pDevice->getScanlineStride() == nExpectedStride );
a9add1
         CPPUNIT_ASSERT_MESSAGE("Palette existence",
a9add1
                                pDevice->getPalette() );
a9add1
         CPPUNIT_ASSERT_MESSAGE("Palette entry 0 is black",
a9add1
@@ -107,8 +110,7 @@ public:
a9add1
         basegfx::B2ISize       aSize2(3,3);
a9add1
         BitmapDeviceSharedPtr  pDevice( createBitmapDevice( aSize,
a9add1
                                                             true,
a9add1
-                                                            FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
a9add1
+                                                            FORMAT_ONE_BIT_MSB_PAL) );
a9add1
 
a9add1
         BitmapDeviceSharedPtr  pClone( cloneBitmapDevice(
a9add1
                                            aSize2,
a9add1
@@ -123,8 +125,7 @@ public:
a9add1
         const basegfx::B2ISize aSize(64,64);
a9add1
         BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
a9add1
                                                            true,
a9add1
-                                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
a9add1
+                                                           FORMAT_ONE_BIT_MSB_PAL) );
a9add1
 
a9add1
         const basegfx::B2IPoint aPt(3,3);
a9add1
         CPPUNIT_ASSERT_MESSAGE("getPixelData for virgin device",
a9add1
@@ -171,8 +172,7 @@ public:
a9add1
         {
a9add1
             pDevice = createBitmapDevice( aSize,
a9add1
                                           true,
a9add1
-                                          FORMAT_ONE_BIT_LSB_PAL,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_LSB_PAL, aSize.getX()));
a9add1
+                                          FORMAT_ONE_BIT_LSB_PAL);
a9add1
 
a9add1
             pDevice->setPixel( aPt2, aCol, DrawMode_PAINT );
a9add1
             CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #4",
a9add1
@@ -197,8 +197,7 @@ public:
a9add1
         {
a9add1
             pDevice = createBitmapDevice( aSize,
a9add1
                                           true,
a9add1
-                                          FORMAT_EIGHT_BIT_GREY,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, aSize.getX()));
a9add1
+                                          FORMAT_EIGHT_BIT_GREY);
a9add1
 
a9add1
             const Color aCol4(0x010101);
a9add1
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
a9add1
@@ -220,8 +219,7 @@ public:
a9add1
         {
a9add1
             pDevice = createBitmapDevice( aSize,
a9add1
                                           true,
a9add1
-                                          FORMAT_SIXTEEN_BIT_LSB_TC_MASK,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_SIXTEEN_BIT_LSB_TC_MASK, aSize.getX()));
a9add1
+                                          FORMAT_SIXTEEN_BIT_LSB_TC_MASK);
a9add1
             const Color aCol7(0);
a9add1
             pDevice->clear( aCol7 );
a9add1
 
a9add1
@@ -245,8 +243,7 @@ public:
a9add1
         {
a9add1
             pDevice = createBitmapDevice( aSize,
a9add1
                                           true,
a9add1
-                                          FORMAT_TWENTYFOUR_BIT_TC_MASK,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_TWENTYFOUR_BIT_TC_MASK, aSize.getX()));
a9add1
+                                          FORMAT_TWENTYFOUR_BIT_TC_MASK);
a9add1
 
a9add1
             const Color aCol4(0x01010101);
a9add1
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
a9add1
@@ -273,8 +270,7 @@ public:
a9add1
         {
a9add1
             pDevice = createBitmapDevice( aSize,
a9add1
                                           true,
a9add1
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
a9add1
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
a9add1
 
a9add1
             const Color aCol4(0x01010101);
a9add1
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
a9add1
diff --git a/basebmp/test/bmpmasktest.cxx b/basebmp/test/bmpmasktest.cxx
a9add1
index 611e189..ded87f8 100644
a9add1
--- a/basebmp/test/bmpmasktest.cxx
a9add1
+++ b/basebmp/test/bmpmasktest.cxx
a9add1
@@ -91,26 +91,21 @@ public:
a9add1
         const basegfx::B2ISize aSize(10,10);
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL);
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                             true,
a9add1
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
a9add1
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
a9add1
 
a9add1
         mpMaskBmp1bpp = createBitmapDevice( aSize,
a9add1
                                             true,
a9add1
-                                            FORMAT_ONE_BIT_MSB_GREY,
a9add1
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_GREY, aSize.getX()));
a9add1
+                                            FORMAT_ONE_BIT_MSB_GREY);
a9add1
 
a9add1
         mpBmp1bpp = createBitmapDevice( aSize,
a9add1
                                         true,
a9add1
-                                        FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                        basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
a9add1
+                                        FORMAT_ONE_BIT_MSB_PAL);
a9add1
         mpBmp32bpp = createBitmapDevice( aSize,
a9add1
                                          true,
a9add1
-                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                         basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
a9add1
+                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
a9add1
 
a9add1
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
a9add1
 
a9add1
@@ -169,7 +164,6 @@ public:
a9add1
 //            nFormat = Format::OneBitMsbGrey; // FIXME - un-comment me to crash hard.
a9add1
             xMask = createBitmapDevice( aSize, false /* bTopDown */,
a9add1
                                         nFormat,
a9add1
-                                         basebmp::getBitmapDeviceStrideForWidth( nFormat, aSize.getX()),
a9add1
                                          PaletteMemorySharedVector(
a9add1
                                                 new std::vector< basebmp::Color >(aDevPal) ) );
a9add1
             // wipe to copy everything.
a9add1
@@ -183,17 +177,13 @@ public:
a9add1
                                     DrawMode::DrawMode_PAINT );
a9add1
 
a9add1
             xBitmap = createBitmapDevice( aSize, false,
a9add1
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(
a9add1
-                                                FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, aSize.getX() ) );
a9add1
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX );
a9add1
             xBitmap->clear(Color(0x80808080));
a9add1
         }
a9add1
         { // mpOutput & mpBitmap
a9add1
             const basegfx::B2ISize aSize(9, 9);
a9add1
             xOutput = createBitmapDevice( aSize, false,
a9add1
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX,
a9add1
-                                          basebmp::getBitmapDeviceStrideForWidth(
a9add1
-                                                FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, aSize.getX()) );
a9add1
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX);
a9add1
             xOutput->clear(Color(0xffffffff));
a9add1
         }
a9add1
 
a9add1
diff --git a/basebmp/test/bmptest.cxx b/basebmp/test/bmptest.cxx
a9add1
index 30644fb..f6ea0b6 100644
a9add1
--- a/basebmp/test/bmptest.cxx
a9add1
+++ b/basebmp/test/bmptest.cxx
a9add1
@@ -148,23 +148,19 @@ public:
a9add1
     void setUp() SAL_OVERRIDE
a9add1
     {
a9add1
         const basegfx::B2ISize aSize(10,10);
a9add1
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL, nStride );
a9add1
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                             true,
a9add1
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
a9add1
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
a9add1
 
a9add1
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
a9add1
         mpBmp1bpp = createBitmapDevice( aSize,
a9add1
                                         true,
a9add1
-                                        FORMAT_ONE_BIT_MSB_PAL, nStride );
a9add1
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
a9add1
+                                        FORMAT_ONE_BIT_MSB_PAL);
a9add1
         mpBmp32bpp = createBitmapDevice( aSize,
a9add1
                                          true,
a9add1
-                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
a9add1
+                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
 
a9add1
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
a9add1
 
a9add1
diff --git a/basebmp/test/cliptest.cxx b/basebmp/test/cliptest.cxx
a9add1
index 13ad48c..8526964 100644
a9add1
--- a/basebmp/test/cliptest.cxx
a9add1
+++ b/basebmp/test/cliptest.cxx
a9add1
@@ -154,10 +154,9 @@ private:
a9add1
 
a9add1
     void implTestMaskColorClip(const BitmapDeviceSharedPtr& rDevice)
a9add1
     {
a9add1
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, rDevice->getSize().getX());
a9add1
         BitmapDeviceSharedPtr pBmp( createBitmapDevice( rDevice->getSize(),
a9add1
                                                         true,
a9add1
-                                                        FORMAT_EIGHT_BIT_GREY, nStride ));
a9add1
+                                                        FORMAT_EIGHT_BIT_GREY ));
a9add1
 
a9add1
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
a9add1
 
a9add1
@@ -189,18 +188,15 @@ public:
a9add1
     void setUp() SAL_OVERRIDE
a9add1
     {
a9add1
         const basegfx::B2ISize aSize(11,11);
a9add1
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_GREY, aSize.getX());
a9add1
         mpClipMask = createBitmapDevice( aSize,
a9add1
                                          true,
a9add1
-                                         FORMAT_ONE_BIT_MSB_GREY, nStride );
a9add1
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
a9add1
+                                         FORMAT_ONE_BIT_MSB_GREY );
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL, nStride );
a9add1
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
a9add1
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
 
a9add1
         OUString aSvg( "m 0 0 h5 l5 5 v5 h-5 l-5-5 z" );
a9add1
         basegfx::B2DPolyPolygon aPoly;
a9add1
diff --git a/basebmp/test/filltest.cxx b/basebmp/test/filltest.cxx
a9add1
index 875a27d..067ec24 100644
a9add1
--- a/basebmp/test/filltest.cxx
a9add1
+++ b/basebmp/test/filltest.cxx
a9add1
@@ -211,12 +211,10 @@ public:
a9add1
         const basegfx::B2ISize aSize(11,11);
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
a9add1
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
     }
a9add1
 
a9add1
     void testRectFill()
a9add1
diff --git a/basebmp/test/linetest.cxx b/basebmp/test/linetest.cxx
a9add1
index 731158e..f6a3909 100644
a9add1
--- a/basebmp/test/linetest.cxx
a9add1
+++ b/basebmp/test/linetest.cxx
a9add1
@@ -151,12 +151,10 @@ public:
a9add1
         const basegfx::B2ISize aSize(11,11);
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()) );
a9add1
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
     }
a9add1
 
a9add1
     void testCornerCases()
a9add1
@@ -165,8 +163,7 @@ public:
a9add1
         BitmapDeviceSharedPtr pDevice = createBitmapDevice(
a9add1
             aSize,
a9add1
             true,
a9add1
-            FORMAT_ONE_BIT_MSB_PAL,
a9add1
-            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
a9add1
+            FORMAT_ONE_BIT_MSB_PAL );
a9add1
 
a9add1
         const basegfx::B2IPoint aPt1(0,0);
a9add1
         const basegfx::B2IPoint aPt2(10,10);
a9add1
@@ -182,8 +179,7 @@ public:
a9add1
         pDevice = createBitmapDevice(
a9add1
             aSize2,
a9add1
             true,
a9add1
-            FORMAT_ONE_BIT_MSB_PAL,
a9add1
-            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
a9add1
+            FORMAT_ONE_BIT_MSB_PAL );
a9add1
 
a9add1
         CPPUNIT_ASSERT_MESSAGE("only pixel cleared",
a9add1
                                 pDevice->getPixelData(aPt1) == 0);
a9add1
diff --git a/basebmp/test/masktest.cxx b/basebmp/test/masktest.cxx
a9add1
index 7b4559c..d53ba72 100644
a9add1
--- a/basebmp/test/masktest.cxx
a9add1
+++ b/basebmp/test/masktest.cxx
a9add1
@@ -104,17 +104,14 @@ public:
a9add1
         const basegfx::B2ISize aSize(10,10);
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                             true,
a9add1
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()) );
a9add1
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
 
a9add1
         mpMask = createBitmapDevice( aSize,
a9add1
                                      true,
a9add1
-                                     FORMAT_EIGHT_BIT_GREY,
a9add1
-                                     basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, aSize.getX()) );
a9add1
+                                     FORMAT_EIGHT_BIT_GREY );
a9add1
 
a9add1
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
a9add1
 
a9add1
diff --git a/basebmp/test/polytest.cxx b/basebmp/test/polytest.cxx
a9add1
index 60746d7..a0371eb 100644
a9add1
--- a/basebmp/test/polytest.cxx
a9add1
+++ b/basebmp/test/polytest.cxx
a9add1
@@ -296,12 +296,10 @@ public:
a9add1
         const basegfx::B2ISize aSize(10,10);
a9add1
         mpDevice1bpp = createBitmapDevice( aSize,
a9add1
                                            true,
a9add1
-                                           FORMAT_ONE_BIT_MSB_PAL,
a9add1
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
a9add1
+                                           FORMAT_ONE_BIT_MSB_PAL );
a9add1
         mpDevice32bpp = createBitmapDevice( aSize,
a9add1
                                             true,
a9add1
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
a9add1
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
a9add1
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
a9add1
     }
a9add1
 
a9add1
     void testEmpty()
a9add1
diff --git a/include/basebmp/bitmapdevice.hxx b/include/basebmp/bitmapdevice.hxx
a9add1
index 5953741..6071c79 100644
a9add1
--- a/include/basebmp/bitmapdevice.hxx
a9add1
+++ b/include/basebmp/bitmapdevice.hxx
a9add1
@@ -668,8 +668,7 @@ sal_Int32 BASEBMP_DLLPUBLIC getBitmapDeviceStrideForWidth(Format nScanlineFormat
a9add1
  */
a9add1
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector& rSize,
a9add1
                                                             bool                      bTopDown,
a9add1
-                                                            Format                    nScanlineFormat,
a9add1
-                                                            sal_Int32                 nScanlineStride );
a9add1
+                                                            Format                    nScanlineFormat );
a9add1
 
a9add1
 /** Function to create a BitmapDevice for given scanline format
a9add1
     with the given palette
a9add1
@@ -681,7 +680,6 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVe
a9add1
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector&        rSize,
a9add1
                                                             bool                             bTopDown,
a9add1
                                                             Format                           nScanlineFormat,
a9add1
-                                                            sal_Int32                        nScanlineStride,
a9add1
                                                             const PaletteMemorySharedVector& rPalette );
a9add1
 
a9add1
 /** Function to create a BitmapDevice for given scanline format
a9add1
@@ -693,7 +691,6 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVe
a9add1
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector&        rSize,
a9add1
                                                             bool                             bTopDown,
a9add1
                                                             Format                           nScanlineFormat,
a9add1
-                                                            sal_Int32                        nScanlineStride,
a9add1
                                                             const RawMemorySharedArray&      rMem,
a9add1
                                                             const PaletteMemorySharedVector& rPalette );
a9add1
 
a9add1
@@ -725,8 +722,8 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC subsetBitmapDevice( const BitmapDeviceSh
a9add1
     copied, only the size can be varied. Note that the prototype's
a9add1
     bitmap content is not copied, only a palette (if any).
a9add1
  */
a9add1
-BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC cloneBitmapDevice( const basegfx::B2IVector&    rSize,
a9add1
-                                                           const BitmapDeviceSharedPtr& rProto );
a9add1
+BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC cloneBitmapDevice(const basegfx::B2IVector& rSize,
a9add1
+                                                          const BitmapDeviceSharedPtr& rProto);
a9add1
 
a9add1
 }
a9add1
 
a9add1
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
a9add1
index 87435f5..b535187 100644
a9add1
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
a9add1
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
a9add1
@@ -771,7 +771,7 @@ DECLARE_OOXMLIMPORT_TEST(testN777345, "n777345.docx")
a9add1
     Graphic aGraphic(xGraphic);
a9add1
     // If this changes later, feel free to update it, but make sure it's not
a9add1
     // the checksum of a white/transparent placeholder rectangle.
a9add1
-    CPPUNIT_ASSERT_EQUAL(BitmapChecksum(3652741777587093783), aGraphic.GetChecksum());
a9add1
+    CPPUNIT_ASSERT_EQUAL(BitmapChecksum(SAL_CONST_UINT64(12149824012634930130)), aGraphic.GetChecksum());
a9add1
 #endif
a9add1
 }
a9add1
 
a9add1
diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx
a9add1
index 901526e..92c2835 100644
a9add1
--- a/vcl/headless/svpbmp.cxx
a9add1
+++ b/vcl/headless/svpbmp.cxx
a9add1
@@ -52,9 +52,8 @@ bool SvpSalBitmap::Create( const Size& rSize,
a9add1
         aSize.setX( 1 );
a9add1
     if( aSize.getY() == 0 )
a9add1
         aSize.setY( 1 );
a9add1
-    sal_Int32 nStride = getBitmapDeviceStrideForWidth(nFormat, aSize.getX());
a9add1
     if( nBitCount > 8 )
a9add1
-        m_aBitmap = createBitmapDevice( aSize, false, nFormat, nStride );
a9add1
+        m_aBitmap = createBitmapDevice( aSize, false, nFormat );
a9add1
     else
a9add1
     {
a9add1
         // prepare palette
a9add1
@@ -67,7 +66,7 @@ bool SvpSalBitmap::Create( const Size& rSize,
a9add1
             const BitmapColor& rCol = rPalette[i];
a9add1
             (*pPalette)[i] = basebmp::Color( rCol.GetRed(), rCol.GetGreen(), rCol.GetBlue() );
a9add1
         }
a9add1
-        m_aBitmap = createBitmapDevice( aSize, false, nFormat, nStride,
a9add1
+        m_aBitmap = createBitmapDevice( aSize, false, nFormat,
a9add1
                                         basebmp::RawMemorySharedArray(),
a9add1
                                         basebmp::PaletteMemorySharedVector( pPalette )
a9add1
                                         );
a9add1
@@ -336,7 +335,6 @@ void SvpSalBitmap::ReleaseBuffer( BitmapBuffer* pBuffer, BitmapAccessMode nMode
a9add1
             m_aBitmap = basebmp::createBitmapDevice( m_aBitmap->getSize(),
a9add1
                                                      m_aBitmap->isTopDown(),
a9add1
                                                      m_aBitmap->getScanlineFormat(),
a9add1
-                                                     m_aBitmap->getScanlineStride(),
a9add1
                                                      m_aBitmap->getBuffer(),
a9add1
                                                      pPal );
a9add1
         }
a9add1
diff --git a/vcl/headless/svpframe.cxx b/vcl/headless/svpframe.cxx
a9add1
index e1218d7..22ffaef 100644
a9add1
--- a/vcl/headless/svpframe.cxx
a9add1
+++ b/vcl/headless/svpframe.cxx
a9add1
@@ -292,8 +292,7 @@ void SvpSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_u
a9add1
             aFrameSize.setX( 1 );
a9add1
         if( aFrameSize.getY() == 0 )
a9add1
             aFrameSize.setY( 1 );
a9add1
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(m_nScanlineFormat, aFrameSize.getX());
a9add1
-        m_aFrame = createBitmapDevice( aFrameSize, m_bTopDown, m_nScanlineFormat, nStride );
a9add1
+        m_aFrame = createBitmapDevice( aFrameSize, m_bTopDown, m_nScanlineFormat );
a9add1
         if (m_bDamageTracking)
a9add1
             m_aFrame->setDamageTracker(
a9add1
                 basebmp::IBitmapDeviceDamageTrackerSharedPtr( new DamageTracker ) );
a9add1
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
a9add1
index 0afce7e..cbe3dc1 100644
a9add1
--- a/vcl/headless/svpgdi.cxx
a9add1
+++ b/vcl/headless/svpgdi.cxx
a9add1
@@ -173,14 +173,14 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight,
a9add1
         return false;
a9add1
     }
a9add1
 
a9add1
-    cairo_t* cr = createCairoContext(m_aDevice);
a9add1
+    cairo_t* cr = createCairoContext(m_aOrigDevice);
a9add1
     if (!cr)
a9add1
         return bRet;
a9add1
 
a9add1
-    if (!m_aDevice->isTopDown())
a9add1
+    if (!m_aOrigDevice->isTopDown())
a9add1
     {
a9add1
         cairo_scale(cr, 1, -1.0);
a9add1
-        cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
a9add1
+        cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
a9add1
     }
a9add1
 
a9add1
     clipRegion(cr);
a9add1
@@ -193,7 +193,7 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight,
a9add1
     cairo_rectangle(cr, nX, nY, nWidth, nHeight);
a9add1
 
a9add1
     cairo_rectangle_int_t extents;
a9add1
-    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
a9add1
+    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
a9add1
     if (xDamageTracker)
a9add1
         extents = getFillDamage(cr);
a9add1
 
a9add1
@@ -731,14 +731,14 @@ bool SvpSalGraphics::drawPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPoly, d
a9add1
         return false;
a9add1
     }
a9add1
 
a9add1
-    cairo_t* cr = createCairoContext(m_aDevice);
a9add1
+    cairo_t* cr = createCairoContext(m_aOrigDevice);
a9add1
     if (!cr)
a9add1
         return false;
a9add1
 
a9add1
-    if (!m_aDevice->isTopDown())
a9add1
+    if (!m_aOrigDevice->isTopDown())
a9add1
     {
a9add1
         cairo_scale(cr, 1, -1.0);
a9add1
-        cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
a9add1
+        cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
a9add1
     }
a9add1
 
a9add1
     clipRegion(cr);
a9add1
@@ -752,7 +752,7 @@ bool SvpSalGraphics::drawPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPoly, d
a9add1
         AddPolygonToPath(cr, *pPoly, true);
a9add1
 
a9add1
     cairo_rectangle_int_t extents;
a9add1
-    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
a9add1
+    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
a9add1
     if (xDamageTracker)
a9add1
         extents = getFillDamage(cr);
a9add1
 
a9add1
@@ -891,11 +891,12 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh
a9add1
 {
a9add1
     SvpSalBitmap* pBitmap = new SvpSalBitmap();
a9add1
 
a9add1
-    if (m_aDevice)
a9add1
+    if (m_aOrigDevice)
a9add1
     {
a9add1
         basebmp::BitmapDeviceSharedPtr aCopy;
a9add1
         aCopy = cloneBitmapDevice(basegfx::B2IVector(nWidth, nHeight),
a9add1
-                                   m_aDevice);
a9add1
+                                   m_aOrigDevice);
a9add1
+        basegfx::B2IVector size = aCopy->getSize();
a9add1
         basegfx::B2IBox aSrcRect( nX, nY, nX+nWidth, nY+nHeight );
a9add1
         basegfx::B2IBox aDestRect( 0, 0, nWidth, nHeight );
a9add1
 
a9add1
@@ -941,12 +942,12 @@ void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv
a9add1
     }
a9add1
     else if ( nFlags & SAL_INVERT_50 )
a9add1
     {
a9add1
-        if (cairo_t* cr = createCairoContext(m_aDevice))
a9add1
+        if (cairo_t* cr = createCairoContext(m_aOrigDevice))
a9add1
         {
a9add1
-            if (!m_aDevice->isTopDown())
a9add1
+            if (!m_aOrigDevice->isTopDown())
a9add1
             {
a9add1
                 cairo_scale(cr, 1, -1.0);
a9add1
-                cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
a9add1
+                cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
a9add1
             }
a9add1
 
a9add1
             clipRegion(cr);
a9add1
@@ -954,7 +955,7 @@ void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv
a9add1
             cairo_pattern_t *pattern = create_stipple();
a9add1
 
a9add1
             cairo_rectangle_int_t extents;
a9add1
-            basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
a9add1
+            basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
a9add1
 
a9add1
             cairo_rectangle(cr, nX, nY, nWidth, nHeight);
a9add1
 
a9add1
@@ -1075,7 +1076,7 @@ bool SvpSalGraphics::supportsOperation(OutDevSupportType eType) const
a9add1
 #if ENABLE_CAIRO_CANVAS
a9add1
     if (m_aDrawMode == basebmp::DrawMode_XOR)
a9add1
         return false;
a9add1
-    if (!isCairoCompatible(m_aDevice))
a9add1
+    if (!isCairoCompatible(m_aOrigDevice))
a9add1
         return false;
a9add1
     switch (eType)
a9add1
     {
a9add1
diff --git a/vcl/headless/svptextrender.cxx b/vcl/headless/svptextrender.cxx
a9add1
index f143da1..2cd51ef 100644
a9add1
--- a/vcl/headless/svptextrender.cxx
a9add1
+++ b/vcl/headless/svptextrender.cxx
a9add1
@@ -152,7 +152,7 @@ BitmapDeviceSharedPtr SvpGlyphPeer::GetGlyphBmp( ServerFont& rServerFont,
a9add1
                 pGcpHelper->maRawBitmap.mnScanlineSize,
a9add1
                 pGcpHelper->maRawBitmap.mnHeight );
a9add1
             static PaletteMemorySharedVector aDummyPAL;
a9add1
-            pGcpHelper->maBitmapDev = createBitmapDevice( aSize, true, nBmpFormat, aSize.getX(), pGcpHelper->maRawBitmap.mpBits, aDummyPAL );
a9add1
+            pGcpHelper->maBitmapDev = createBitmapDevice( aSize, true, nBmpFormat, pGcpHelper->maRawBitmap.mpBits, aDummyPAL );
a9add1
         }
a9add1
 
a9add1
         rGlyphData.ExtDataRef().meInfo = nBmpFormat;
a9add1
diff --git a/vcl/headless/svpvd.cxx b/vcl/headless/svpvd.cxx
a9add1
index 1e4050a..1c4237b 100644
a9add1
--- a/vcl/headless/svpvd.cxx
a9add1
+++ b/vcl/headless/svpvd.cxx
a9add1
@@ -71,21 +71,20 @@ bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY,
a9add1
         SvpSalInstance* pInst = SvpSalInstance::s_pDefaultInstance;
a9add1
         assert( pInst );
a9add1
         basebmp::Format nFormat = pInst->getFormatForBitCount( m_nBitCount );
a9add1
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(nFormat, aDevSize.getX());
a9add1
 
a9add1
         if ( m_nBitCount == 1 )
a9add1
         {
a9add1
             std::vector< basebmp::Color > aDevPal(2);
a9add1
             aDevPal[0] = basebmp::Color( 0, 0, 0 );
a9add1
             aDevPal[1] = basebmp::Color( 0xff, 0xff, 0xff );
a9add1
-            m_aDevice = createBitmapDevice( aDevSize, bTopDown, nFormat, nStride,
a9add1
+            m_aDevice = createBitmapDevice( aDevSize, bTopDown, nFormat,
a9add1
                                             PaletteMemorySharedVector( new std::vector< basebmp::Color >(aDevPal) ) );
a9add1
         }
a9add1
         else
a9add1
         {
a9add1
             m_aDevice = pBuffer ?
a9add1
-                          createBitmapDevice( aDevSize, bTopDown, nFormat, nStride, pBuffer, PaletteMemorySharedVector() )
a9add1
-                        : createBitmapDevice( aDevSize, bTopDown, nFormat, nStride );
a9add1
+                          createBitmapDevice( aDevSize, bTopDown, nFormat, pBuffer, PaletteMemorySharedVector() )
a9add1
+                        : createBitmapDevice( aDevSize, bTopDown, nFormat );
a9add1
         }
a9add1
 
a9add1
         // update device in existing graphics
a9add1
diff --git a/vcl/qa/cppunit/BitmapTest.cxx b/vcl/qa/cppunit/BitmapTest.cxx
a9add1
index a5437c1..384afc7 100644
a9add1
--- a/vcl/qa/cppunit/BitmapTest.cxx
a9add1
+++ b/vcl/qa/cppunit/BitmapTest.cxx
a9add1
@@ -51,17 +51,12 @@ void BitmapTest::testConvert()
a9add1
     {
a9add1
         Bitmap::ScopedReadAccess pReadAccess(aBitmap);
a9add1
         CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(8), pReadAccess->GetBitCount());
a9add1
-#if defined WNT
a9add1
-        if (!OpenGLHelper::isVCLOpenGLEnabled())
a9add1
-        {
a9add1
-            // GDI Scanlines padded to DWORD multiples, it seems
a9add1
-            CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(12), pReadAccess->GetScanlineSize());
a9add1
-        }
a9add1
-        else
a9add1
+#if defined MACOSX || defined IOS
a9add1
+        //it would be nice to find and change the stride for quartz to be the same as everyone else
a9add1
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(10), pReadAccess->GetScanlineSize());
a9add1
+#else
a9add1
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(12), pReadAccess->GetScanlineSize());
a9add1
 #endif
a9add1
-        {
a9add1
-            CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(10), pReadAccess->GetScanlineSize());
a9add1
-        }
a9add1
         CPPUNIT_ASSERT(pReadAccess->HasPalette());
a9add1
         const BitmapColor& rColor = pReadAccess->GetPaletteColor(pReadAccess->GetPixelIndex(1, 1));
a9add1
         CPPUNIT_ASSERT_EQUAL(sal_Int32(204), sal_Int32(rColor.GetRed()));
a9add1
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
a9add1
index a28c144..eef48cd 100644
a9add1
--- a/vcl/unx/gtk/window/gtksalframe.cxx
a9add1
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
a9add1
@@ -2063,9 +2063,8 @@ void GtkSalFrame::AllocateFrame()
a9add1
             aFrameSize.setX( 1 );
a9add1
         if( aFrameSize.getY() == 0 )
a9add1
             aFrameSize.setY( 1 );
a9add1
-        int cairo_stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, aFrameSize.getX());
a9add1
         m_aFrame = basebmp::createBitmapDevice(aFrameSize, true,
a9add1
-                                               basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, cairo_stride);
a9add1
+                                               basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX);
a9add1
         m_aFrame->setDamageTracker(
a9add1
             basebmp::IBitmapDeviceDamageTrackerSharedPtr(new DamageTracker(*this)) );
a9add1
         SAL_INFO("vcl.gtk3", "allocated m_aFrame size of " << maGeometry.nWidth << " x " << maGeometry.nHeight);
a9add1
-- 
a9add1
2.5.0
a9add1