tdf#119020 always scale icons as 24bit RGB

We don't really care for the palette or even lower bitness of the
original icons, when scaling them. So just convert them to 24bit
to get the best scaling quality.

And also actually fail the OpenGL scaling for 8bit color icons,
instead of handling them as a grayscale image, which results in
"funny" luminance based color icons.

Change-Id: I62ff9e7cd45dbffba81b0db5a0252737b6189059
Reviewed-on: https://gerrit.libreoffice.org/62505
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
(cherry picked from commit b0c475a00ced9ec1e4ef1efb9d184ee8e2a3eaab)
Reviewed-on: https://gerrit.libreoffice.org/62685
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx
index 33fc720..6e497ff 100644
--- a/vcl/opengl/salbmp.cxx
+++ b/vcl/opengl/salbmp.cxx
@@ -582,7 +582,7 @@ bool OpenGLSalBitmap::ReadTexture()
    xContext->state().scissor().disable();
    xContext->state().stencil().disable();

    if (mnBits == 8 || mnBits == 16 || mnBits == 24 || mnBits == 32)
    if ((mnBits == 8 && maPalette.IsGreyPalette()) || mnBits == 16 || mnBits == 24 || mnBits == 32)
    {
        determineTextureFormat(mnBits, nFormat, nType);

diff --git a/vcl/source/image/ImplImageTree.cxx b/vcl/source/image/ImplImageTree.cxx
index d48cd30..039a909 100644
--- a/vcl/source/image/ImplImageTree.cxx
+++ b/vcl/source/image/ImplImageTree.cxx
@@ -181,6 +181,8 @@ void loadImageFromStream(std::shared_ptr<SvStream> const & xStream, OUString con
    {
        rParameters.mbWriteImageToCache = true; // Cache the scaled variant
        double aScaleFactor(aScalePercentage / 100.0);
        // when scaling use the full 24bit RGB values
        rParameters.mrBitmap.Convert(BmpConversion::N24Bit);
        rParameters.mrBitmap.Scale(aScaleFactor, aScaleFactor, BmpScaleFlag::Fast);
    }
}