summaryrefslogtreecommitdiff
path: root/vcl/win/gdi/salgdi2.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/win/gdi/salgdi2.cxx')
-rw-r--r--vcl/win/gdi/salgdi2.cxx10
1 files changed, 7 insertions, 3 deletions
diff --git a/vcl/win/gdi/salgdi2.cxx b/vcl/win/gdi/salgdi2.cxx
index b4aa68fa29cb..ba4afc157bc3 100644
--- a/vcl/win/gdi/salgdi2.cxx
+++ b/vcl/win/gdi/salgdi2.cxx
@@ -116,10 +116,14 @@ void convertToWinSalBitmap(SalBitmap& rSalBitmap, WinSalBitmap& rWinSalBitmap)
rWinSalBitmap.Create(rSalBitmap.GetSize(), vcl::bitDepthToPixelFormat(rSalBitmap.GetBitCount()), aBitmapPalette);
BitmapBuffer* pWrite = rWinSalBitmap.AcquireBuffer(BitmapAccessMode::Write);
- // convert to bottom-up data
- sal_uInt8* pSource = pRead->mpBits + pRead->mnScanlineSize * (pRead->mnHeight - 1);
+ sal_uInt8* pSource(pRead->mpBits);
sal_uInt8* pDestination(pWrite->mpBits);
- tools::Long readRowChange = -pRead->mnScanlineSize;
+ tools::Long readRowChange = pRead->mnScanlineSize;
+ if (pRead->meDirection == ScanlineDirection::TopDown)
+ {
+ pSource += pRead->mnScanlineSize * (pRead->mnHeight - 1);
+ readRowChange = -readRowChange;
+ }
std::unique_ptr<ColorScanlineConverter> pConverter;