tdf#160831 only set outside color to black for alpha masks

The outside color still needs to be white for the content
so only apply the fix for tdf#157795 to the alpha mask.

Change-Id: I7486b2c9062ca96bf127f2bce6b1bd5e65d00ff6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166806
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
Tested-by: Jenkins
(cherry picked from commit 5425103fb5a09c7e5e56d077260523438c593e21)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166728
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Tested-by: Patrick Luby <guibomacdev@gmail.com>
diff --git a/vcl/source/bitmap/BitmapEx.cxx b/vcl/source/bitmap/BitmapEx.cxx
index 40feacbf..07e25f1 100644
--- a/vcl/source/bitmap/BitmapEx.cxx
+++ b/vcl/source/bitmap/BitmapEx.cxx
@@ -657,7 +657,7 @@ namespace
        const Bitmap& rSource,
        const Size& rDestinationSize,
        const basegfx::B2DHomMatrix& rTransform,
        bool bSmooth)
        bool bSmooth, bool bAlphaMask)
    {
        Bitmap aDestination(rDestinationSize, vcl::PixelFormat::N24_BPP);
        BitmapScopedWriteAccess xWrite(aDestination);
@@ -673,7 +673,10 @@ namespace
                // tdf#157795 set color to black outside of bitmap bounds
                // Due to commit 81994cb2b8b32453a92bcb011830fcb884f22ff3,
                // transparent areas are now black instead of white.
                const BitmapColor aOutside(0x0, 0x0, 0x0);
                // tdf#160831 only set outside color to black for alpha masks
                // The outside color still needs to be white for the content
                // so only apply the fix for tdf#157795 to the alpha mask.
                const BitmapColor aOutside = bAlphaMask ? BitmapColor(0x0, 0x0, 0x0) : BitmapColor(0xff, 0xff, 0xff);

                for(tools::Long y(0); y < aDestinationSizePixel.getHeight(); y++)
                {
@@ -759,12 +762,12 @@ BitmapEx BitmapEx::TransformBitmapEx(
    // force destination to 24 bit, we want to smooth output
    const Size aDestinationSize(basegfx::fround(fWidth), basegfx::fround(fHeight));
    bool bSmooth = implTransformNeedsSmooth(rTransformation);
    const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bSmooth));
    const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bSmooth, false));

    // create mask
    if(IsAlpha())
    {
        const Bitmap aAlpha(impTransformBitmap(GetAlphaMask().GetBitmap(), aDestinationSize, rTransformation, bSmooth));
        const Bitmap aAlpha(impTransformBitmap(GetAlphaMask().GetBitmap(), aDestinationSize, rTransformation, bSmooth, true));
        return BitmapEx(aDestination, AlphaMask(aAlpha));
    }