MCGR: Make MCGR default for oox im/export, cleanup

Following an error in CppunitTest_chart2_export3 I updated
the transparency definition at WriteGradientFill and
corrected usages.

Had to correct/adapt some Chart UnitTests. Some of these
changes are temporary since this will/has to change when
ODF MCGR im/export is integrated. I checked that all of
these cases actually work, comparing im LO and MSO.

Adapted some Chart2ImportTest to directly compare/check
now for the fully imported tranparence gradient with
available higher precision.

Adapted OoxDrawingmlTest testGradientMultiStepTransparency
to use new MCGR capabilities.

Adapted testTextframeGradient and tested the turn-around
with rtf gradients. These are a little bit limited and
needed some extra care.

Adapted testTextframeGradient.
Adapted SdOOXMLExportTest1, testTdf94238
Adapted SdOOXMLExportTest1, testTdf128345GradientAxial
Adapted SdOOXMLExportTest2, testTdf105739
Adapted SdOOXMLExportTest3, testTdf127372
Adapted SdOOXMLExportTest3, testTdf127379
Adapted SdMiscTest, testFillGradient
Adapted testTextframeGradient
Adapted ScFiltersTest3, testTdf129789
Adapted SdUiImpressTest, testPageFillGradient

Adapted SdOOXMLExportTest1, testTdf128345GradientLinear by
using better double-to-integer rounding (basegfx::fround) in
DrawingML::WriteGradientStop. After double calculations
this makes the tansition to integer correct and stable. Also
took back change at testTdf128345ChartArea_CG_TS_export
which showed the same flaw before.

2nd look @testTdf128345Legend_CS_TG_axial_export made me
add that stuff again and adapt the axial ColorStop adding
in the export to not export the middle enty twice. Extended
test a little bit, too.
Only do not add value if it starts at 0.0 aka StartColor,
else adding it is corect.

Adapted some tests CPPUNIT_ASSERT to CPPUNIT_ASSERT_EQUAL
after being pointed to it from gerrit_linux_clang_dbgutil
build.

Change-Id: I4a993053da8960035671b655e67908f36e59b5fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150763
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
diff --git a/chart2/qa/extras/chart2geometry.cxx b/chart2/qa/extras/chart2geometry.cxx
index 9a69b81..d52633c 100644
--- a/chart2/qa/extras/chart2geometry.cxx
+++ b/chart2/qa/extras/chart2geometry.cxx
@@ -170,6 +170,12 @@ void Chart2GeometryTest::testTdf128345ChartArea_CG_TS_export()
    // Without the patch the transparency was lost in saved pptx file.
    loadFromURL(u"odp/tdf128345_ChartArea_CG_TS.odp");

    // MCGR: Similar to testTdf128345Legend_CS_TG_axial_export:
    // Checked that it works with the existing import file,
    // but will change with ODF MCGR im/export again.
    // Adapting for now, but need to re-check values after
    // ODF im/export for MCGR is integrated

    // Make sure the chart area has a transparency in gradient stops in saved pptx file.
    save("Impress MS PowerPoint 2007 XML");
    xmlDocUniquePtr pXmlDoc = parseExport("ppt/charts/chart1.xml");
@@ -188,6 +194,12 @@ void Chart2GeometryTest::testTdf128345ChartArea_CG_TS_import()
    // Make sure chart area has transparency when pptx document is opened and resaved as odp.
    // As of Aug 2020, the import generates a transparency gradient. When import is changed to
    // generate solid transparency, the test needs to be adapted.

    // MCGR: Similar to testTdf128345Legend_CS_TG_axial_export:
    // Checked that it works with the existing import file,
    // but will change with ODF MCGR im/export again. We will need to
    // update the *.odp input file. Disable unclear values for now and
    // adapt when ODF im/export for MCGR is integrated
    loadFromURL(u"pptx/tdf128345_ChartArea_CG_TS.pptx");

    // Find transparency gradient name
@@ -216,7 +228,7 @@ void Chart2GeometryTest::testTdf128345ChartArea_CG_TS_import()
    assertXPath(pXmlDoc2, sStart + " and @draw:start='30%']");
    assertXPath(pXmlDoc2, sStart + " and @draw:end='30%']");
    assertXPath(pXmlDoc2, sStart + " and @draw:angle='30deg']");
    assertXPath(pXmlDoc2, sStart + " and @draw:border='20%']");
    assertXPath(pXmlDoc2, sStart + " and @draw:border='0%']"); // MCGR: no border anymore 20% -> 0%
}

void Chart2GeometryTest::testTdf128345ChartWall_CS_TG_export()
@@ -283,13 +295,21 @@ void Chart2GeometryTest::testTdf128345Legend_CS_TG_axial_export()
    CPPUNIT_ASSERT(pXmlDoc);

    OString sPathStart("//c:chartSpace/c:chart/c:legend/c:spPr/a:gradFill");
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs", 3); // axial
    // no element for 0% transparent

    // MCGR: three entries due to axial being mirrored+expanded to linear
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs", 3);

    // MCGR: start entry, no transparence, pos zero
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]/a:srgbClr/a:alpha", 0);
    // 100% transparent = opacity 0. It comes from "axial", therefore it is in the middle.
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[1]", "pos", "0");

    // MCGR: middle entry, 100% transparence, pos 0.5
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]/a:srgbClr/a:alpha", "val", "0");
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[2]", "pos", "50000");

    // MCGR: end entry, no transparence, pos 1.0
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[3]/a:srgbClr/a:alpha", 0);
    assertXPath(pXmlDoc, sPathStart + "/a:gsLst/a:gs[3]", "pos", "100000");
}

void Chart2GeometryTest::testTdf128345Legend_CS_TG_axial_import()
@@ -320,8 +340,9 @@ void Chart2GeometryTest::testTdf128345Legend_CS_TG_axial_import()
    const OString sAttribute("@draw:name='" + OU2O(sOUOpacityName) + "'");
    const OString sStart("//office:document-styles/office:styles/draw:opacity[" + sAttribute);
    assertXPath(pXmlDoc2, sStart + "]", 1);
    assertXPath(pXmlDoc2, sStart + " and @draw:style='axial']");
    assertXPath(pXmlDoc2, sStart + " and @draw:start='0%']");
    // MCGR: Needs odf im/export for MCGR, then adapt.
    assertXPath(pXmlDoc2, sStart + " and @draw:style='linear']"); // MCGR: axial -> linear
    assertXPath(pXmlDoc2, sStart + " and @draw:start='100%']"); // MCGR: 0% -> 100%
    assertXPath(pXmlDoc2, sStart + " and @draw:end='100%']");
}

diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx
index 786ad81..776c6e7 100644
--- a/chart2/qa/extras/chart2import.cxx
+++ b/chart2/qa/extras/chart2import.cxx
@@ -32,8 +32,9 @@
#include <iterator>

#include <com/sun/star/util/Color.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <basegfx/utils/gradienttools.hxx>

class Chart2ImportTest : public ChartTest
{
@@ -618,12 +619,23 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc889755)
    //tdf#139940 - the title's gradient was lost and was filled with solid blue, instead of a "blue underline".
    uno::Reference<drawing::XDrawPagesSupplier> xDoc(mxComponent, uno::UNO_QUERY_THROW);
    uno::Reference<drawing::XDrawPage> xPage(xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW);

    // Shape "Title 3"
    // MCGR: Use the whole completely imported transparency gradient to check for correctness
    uno::Reference<beans::XPropertySet> xShapeProps(xPage->getByIndex(4), uno::UNO_QUERY_THROW);
    awt::Gradient aTransparence;
    awt::Gradient2 aTransparence;
    xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence;
    CPPUNIT_ASSERT(aTransparence.StartColor != aTransparence.EndColor);
    CPPUNIT_ASSERT_EQUAL(COL_WHITE, Color(ColorTransparency, aTransparence.StartColor));

    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aTransparence);

    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.25, 0.25, 0.25));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.070000000000000007));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.25, 0.25, 0.25));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 0.080000000000000002));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), basegfx::BColor(1.0, 1.0, 1.0));
}

CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testBnc882383)
@@ -652,14 +664,22 @@ CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testTransparencyGradientValue)
    xPropertySet->getPropertyValue("FillTransparenceGradientName") >>= sTranspGradientName;
    CPPUNIT_ASSERT(!sTranspGradientName.isEmpty());

    awt::Gradient aTransparenceGradient;
    awt::Gradient2 aTransparenceGradient;
    uno::Reference< lang::XMultiServiceFactory > xFact(xChartDoc, uno::UNO_QUERY);
    CPPUNIT_ASSERT(xFact.is());
    uno::Reference< container::XNameAccess > xTransparenceGradient(xFact->createInstance("com.sun.star.drawing.TransparencyGradientTable"), uno::UNO_QUERY);
    uno::Any rTransparenceValue = xTransparenceGradient->getByName(sTranspGradientName);
    CPPUNIT_ASSERT(rTransparenceValue >>= aTransparenceGradient);
    CPPUNIT_ASSERT_EQUAL(sal_Int32(3355443), aTransparenceGradient.EndColor);
    CPPUNIT_ASSERT_EQUAL(sal_Int32(5000268), aTransparenceGradient.StartColor);

    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aTransparenceGradient);

    // MCGR: Use the whole completely imported transparency gradient to check for correctness
    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.3, 0.3, 0.3));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.2, 0.2, 0.2));
}

CPPUNIT_TEST_FIXTURE(Chart2ImportTest, testSimpleStrictXLSX)
diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx
index 6cba4b0..451b3f0 100644
--- a/include/oox/export/drawingml.hxx
+++ b/include/oox/export/drawingml.hxx
@@ -355,8 +355,7 @@ public:
    void WriteColor( const OUString& sColorSchemeName, const css::uno::Sequence< css::beans::PropertyValue >& aTransformations, sal_Int32 nAlpha = MAX_PERCENT );
    void WriteColor( const ::Color nColor, const css::uno::Sequence< css::beans::PropertyValue >& aTransformations, sal_Int32 nAlpha = MAX_PERCENT );
    void WriteColorTransformations( const css::uno::Sequence< css::beans::PropertyValue >& aTransformations, sal_Int32 nAlpha = MAX_PERCENT );
    void WriteGradientStop(sal_uInt16 nStop, ::Color nColor, sal_Int32 nAlpha = MAX_PERCENT);
    void WriteGradientStop2(double fOffset, const basegfx::BColor& rColor, const basegfx::BColor& rAlpha);
    void WriteGradientStop(double fOffset, const basegfx::BColor& rColor, const basegfx::BColor& rAlpha);
    void WriteLineArrow( const css::uno::Reference< css::beans::XPropertySet >& rXPropSet, bool bLineStart );
    void WriteConnectorConnections( sal_Int32 nStartGlueId, sal_Int32 nEndGlueId, sal_Int32 nStartID, sal_Int32 nEndID );

@@ -377,10 +376,7 @@ public:
    */
    void WriteGradientFill(
        const css::awt::Gradient2* pColorGradient, sal_Int32 nFixColor,
        const css::awt::Gradient2* pTransparenceGradient, sal_Int32 nFixTransparence);
    void WriteGradientFill2(
        const css::awt::Gradient2* pColorGradient, sal_Int32 nFixColor,
        const css::awt::Gradient2* pTransparenceGradient, sal_Int32 nFixTransparence);
        const css::awt::Gradient2* pTransparenceGradient, double fFixTransparence = 0.0);

    void WriteGrabBagGradientFill( const css::uno::Sequence< css::beans::PropertyValue >& aGradientStops, const css::awt::Gradient2& rGradient);

diff --git a/oox/CppunitTest_oox_drawingml.mk b/oox/CppunitTest_oox_drawingml.mk
index 3a9e0d0..d670e05 100644
--- a/oox/CppunitTest_oox_drawingml.mk
+++ b/oox/CppunitTest_oox_drawingml.mk
@@ -31,6 +31,7 @@ $(eval $(call gb_CppunitTest_use_libraries,oox_drawingml, \
    tl \
    unotest \
    utl \
    basegfx \
))

$(eval $(call gb_CppunitTest_use_sdk_api,oox_drawingml))
diff --git a/oox/CppunitTest_oox_shape.mk b/oox/CppunitTest_oox_shape.mk
index 073a211..a969d80 100644
--- a/oox/CppunitTest_oox_shape.mk
+++ b/oox/CppunitTest_oox_shape.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_CppunitTest_use_libraries,oox_shape, \
    test \
    unotest \
    utl \
    basegfx \
))

$(eval $(call gb_CppunitTest_use_sdk_api,oox_shape))
diff --git a/oox/qa/unit/drawingml.cxx b/oox/qa/unit/drawingml.cxx
index 09ab712..8d5627a 100644
--- a/oox/qa/unit/drawingml.cxx
+++ b/oox/qa/unit/drawingml.cxx
@@ -9,7 +9,7 @@

#include <test/unoapi_test.hxx>

#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XNamed.hpp>
@@ -35,6 +35,7 @@
#include <docmodel/theme/Theme.hxx>

#include <comphelper/sequenceashashmap.hxx>
#include <basegfx/utils/gradienttools.hxx>

using namespace ::com::sun::star;

@@ -181,7 +182,7 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testGradientMultiStepTransparency)
    uno::Reference<container::XNamed> xShape(xDrawPage->getByIndex(1), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(OUString("Rectangle 4"), xShape->getName());
    uno::Reference<beans::XPropertySet> xShapeProps(xShape, uno::UNO_QUERY);
    awt::Gradient aTransparence;
    awt::Gradient2 aTransparence;
    xShapeProps->getPropertyValue("FillTransparenceGradient") >>= aTransparence;

    // Without the accompanying fix in place, this test would have failed with:
@@ -189,7 +190,13 @@ CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testGradientMultiStepTransparency)
    // - Actual  : 3487029 (0x353535)
    // i.e. the end transparency was not 100%, but was 21%, leading to an unexpected visible line on
    // the right of this shape.
    CPPUNIT_ASSERT_EQUAL(COL_WHITE, Color(ColorTransparency, aTransparence.EndColor));
    // MCGR: Use the completely imported transparency gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aTransparence);

    CPPUNIT_ASSERT_EQUAL(size_t(5), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[4].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[4].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
}

CPPUNIT_TEST_FIXTURE(OoxDrawingmlTest, testShapeTextAlignment)
diff --git a/oox/qa/unit/shape.cxx b/oox/qa/unit/shape.cxx
index 523003ee..e8d4f18 100644
--- a/oox/qa/unit/shape.cxx
+++ b/oox/qa/unit/shape.cxx
@@ -14,7 +14,7 @@
#include <string_view>

#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -37,6 +37,7 @@
#include <svx/svdoashp.hxx>
#include <tools/color.hxx>
#include <docmodel/uno/UnoThemeColor.hxx>
#include <basegfx/utils/gradienttools.hxx>

using namespace ::com::sun::star;

@@ -467,11 +468,22 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testWriterFontwork3)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(0), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.0, 0.0, 1.0));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[1].getStopColor(),
            basegfx::BColor(0.96862745098039216, 0.58823529411764708, 0.27450980392156865));

        CPPUNIT_ASSERT_EQUAL(sal_Int16(690), aGradient.Angle);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(255), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(16225862), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(0), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(0), aGradient.YOffset);
        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);
@@ -482,11 +494,22 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testWriterFontwork3)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(1), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.40000000000000002));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[0].getStopColor(),
            basegfx::BColor(0.96862745098039216, 0.58823529411764708, 0.27450980392156865));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 1.0));

        CPPUNIT_ASSERT_EQUAL(sal_Int16(900), aGradient.Angle);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(255), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(16225862), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.YOffset);
        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RADIAL, aGradient.Style);
@@ -497,11 +520,22 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testWriterFontwork3)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(2), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[0].getStopColor(),
            basegfx::BColor(0.96862745098039216, 0.58823529411764708, 0.27450980392156865));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 1.0));

        CPPUNIT_ASSERT_EQUAL(sal_Int16(900), aGradient.Angle);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(255), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(16225862), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(100), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(100), aGradient.YOffset);
        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RECT, aGradient.Style);
@@ -604,12 +638,23 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testImportWordArtGradient)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(0), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(),
                             basegfx::BColor(1.0, 0.75294117647058822, 0.0));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(),
                             basegfx::BColor(0.75294117647058822, 0.0, 0.0));

        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(690), aGradient.Angle);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(16760832), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(12582912), aGradient.EndColor);

        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::LineStyle_SOLID),
                             xShapeProps->getPropertyValue(u"LineStyle"));
@@ -627,19 +672,41 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testImportWordArtGradient)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(1), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(),
                             basegfx::BColor(0.0, 0.51372549019607838, 0.8784313725490196));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(),
                             basegfx::BColor(0.90196078431372551, 0.90196078431372551, 0.0));

        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RADIAL, aGradient.Style);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(15132160), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(33760), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.YOffset);

        xShapeProps->getPropertyValue(u"FillTransparenceGradient") >>= aGradient;
        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RADIAL, aGradient.Style);
        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        // Transparency is encoded in gray color.
        CPPUNIT_ASSERT_EQUAL(sal_Int32(5000268), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(6710886), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[0].getStopColor(),
            basegfx::BColor(0.40000000000000002, 0.40000000000000002, 0.40000000000000002));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[1].getStopColor(),
            basegfx::BColor(0.29999999999999999, 0.29999999999999999, 0.29999999999999999));

        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RADIAL, aGradient.Style);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(50), aGradient.YOffset);

@@ -663,19 +730,39 @@ CPPUNIT_TEST_FIXTURE(OoxShapeTest, testImportWordArtGradient)
        uno::Reference<beans::XPropertySet> xShapeProps(xDrawPage->getByIndex(2), uno::UNO_QUERY);
        CPPUNIT_ASSERT_EQUAL(uno::Any(drawing::FillStyle_GRADIENT),
                             xShapeProps->getPropertyValue(u"FillStyle"));
        awt::Gradient aGradient;
        awt::Gradient2 aGradient;
        xShapeProps->getPropertyValue(u"FillGradient") >>= aGradient;

        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[0].getStopColor(),
            basegfx::BColor(0.26666666666666666, 0.44705882352941179, 0.7686274509803922));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(
            aColorStops[1].getStopColor(),
            basegfx::BColor(0.26666666666666666, 0.44705882352941179, 0.7686274509803922));

        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RECT, aGradient.Style);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(4485828), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(4485828), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(100), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(0), aGradient.YOffset);

        xShapeProps->getPropertyValue(u"FillTransparenceGradient") >>= aGradient;
        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RECT, aGradient.Style);
        // MCGR: Use the completely imported transparency gradient to check for correctness
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

        // Transparency is encoded in gray color.
        CPPUNIT_ASSERT_EQUAL(sal_Int32(16777215), aGradient.EndColor);
        CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aGradient.StartColor);
        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(1.0, 1.0, 1.0));

        CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RECT, aGradient.Style);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(100), aGradient.XOffset);
        CPPUNIT_ASSERT_EQUAL(sal_Int16(0), aGradient.YOffset);

diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index 026a341..2896ae1 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -318,30 +318,6 @@ awt::Size lclGetOriginalSize( const GraphicHelper& rGraphicHelper, const Referen
    return aSizeHmm;
}

/**
 * Looks for a last gradient transition and possibly sets a gradient border
 * based on that.
 */
void extractGradientBorderFromStops(const GradientFillProperties& rGradientProps,
                                    const GraphicHelper& rGraphicHelper, ::Color nPhClr,
                                    awt::Gradient& rGradient)
{
    if (rGradientProps.maGradientStops.size() <= 1)
        return;

    auto it = rGradientProps.maGradientStops.rbegin();
    double fLastPos = it->first;
    Color aLastColor = it->second;
    ++it;
    double fLastButOnePos = it->first;
    Color aLastButOneColor = it->second;
    if (!aLastColor.equals(aLastButOneColor, rGraphicHelper, nPhClr))
        return;

    // Last transition has the same color, we can map that to a border.
    rGradient.Border = rtl::math::round((fLastPos - fLastButOnePos) * 100);
}

} // namespace

void GradientFillProperties::assignUsed( const GradientFillProperties& rSourceProps )
@@ -480,9 +456,7 @@ void FillProperties::pushToPropMap(ShapePropertyMap& rPropMap, const GraphicHelp

        case XML_gradFill:
            // do not create gradient struct if property is not supported...
            static bool bMCGR(nullptr != std::getenv("MCGR_TEST"));

            if( bMCGR && rPropMap.supportsProperty( ShapeProperty::FillGradient ) )
            if( rPropMap.supportsProperty( ShapeProperty::FillGradient ) )
            {
                // use awt::Gradient2, prepare ColorStops
                awt::Gradient2 aGradient;
@@ -607,331 +581,6 @@ void FillProperties::pushToPropMap(ShapePropertyMap& rPropMap, const GraphicHelp
                    rPropMap.setProperty(ShapeProperty::GradientTransparency, aGradient);
                }
            }

            if( !bMCGR && rPropMap.supportsProperty( ShapeProperty::FillGradient ) )
            {
                sal_Int32 nEndTrans     = 0;
                sal_Int32 nStartTrans   = 0;
                awt::Gradient2 aGradient;
                assert(aGradient.ColorStops.get() && "cid#1524676 aGradient.ColorStops._pSequence won't be null here");
                aGradient.Angle = 900;
                aGradient.StartIntensity = 100;
                aGradient.EndIntensity = 100;

                // Old code, values in aGradient overwritten in many cases by newer code below
                if( maGradientProps.maGradientStops.size() > 1 )
                {
                    aGradient.StartColor = sal_Int32(maGradientProps.maGradientStops.begin()->second.getColor( rGraphicHelper, nPhClr ));
                    aGradient.EndColor = sal_Int32(maGradientProps.maGradientStops.rbegin()->second.getColor( rGraphicHelper, nPhClr ));
                    if( maGradientProps.maGradientStops.rbegin()->second.hasTransparency() )
                        nEndTrans = maGradientProps.maGradientStops.rbegin()->second.getTransparency()*255/100;
                    if( maGradientProps.maGradientStops.begin()->second.hasTransparency() )
                        nStartTrans = maGradientProps.maGradientStops.begin()->second.getTransparency()*255/100;
                }

                // "rotate with shape" set to false -> do not rotate
                if ( !maGradientProps.moRotateWithShape.value_or( true ) )
                    nShapeRotation = 0;

                if( maGradientProps.moGradientPath.has_value() )
                {
                    IntegerRectangle2D aFillToRect = maGradientProps.moFillToRect.value_or( IntegerRectangle2D( 0, 0, MAX_PERCENT, MAX_PERCENT ) );
                    sal_Int32 nCenterX = (MAX_PERCENT + aFillToRect.X1 - aFillToRect.X2) / 2;
                    aGradient.XOffset = getLimitedValue<sal_Int16, sal_Int32>(
                        nCenterX / PER_PERCENT, 0, 100);
                    sal_Int32 nCenterY = (MAX_PERCENT + aFillToRect.Y1 - aFillToRect.Y2) / 2;
                    aGradient.YOffset = getLimitedValue<sal_Int16, sal_Int32>(
                        nCenterY / PER_PERCENT, 0, 100);

                    if( maGradientProps.moGradientPath.value() == XML_circle )
                    {
                        // Style should be radial at least when the horizontal center is at 50%.
                        // Otherwise import as a linear gradient, because it is the most similar to the MSO radial style.
                        aGradient.Style = awt::GradientStyle_LINEAR;
                        if( aGradient.XOffset == 100 && aGradient.YOffset == 100 )
                            aGradient.Angle = 450;
                        else if( aGradient.XOffset == 0 && aGradient.YOffset == 100 )
                            aGradient.Angle = 3150;
                        else if( aGradient.XOffset == 100 && aGradient.YOffset == 0 )
                            aGradient.Angle = 1350;
                        else if( aGradient.XOffset == 0 && aGradient.YOffset == 0 )
                            aGradient.Angle = 2250;
                        else
                            aGradient.Style = awt::GradientStyle_RADIAL;
                    }
                    else
                    {
                        aGradient.Style = awt::GradientStyle_RECT;
                    }

                    ::std::swap( aGradient.StartColor, aGradient.EndColor );
                    ::std::swap( nStartTrans, nEndTrans );

                    extractGradientBorderFromStops(maGradientProps, rGraphicHelper, nPhClr,
                                                   aGradient);
                }
                else if (!maGradientProps.maGradientStops.empty())
                {
                    // A copy of the gradient stops for local modification
                    GradientFillProperties::GradientStopMap aGradientStops(maGradientProps.maGradientStops);

                    // Add a fake gradient stop at 0% and 100% if necessary, so that the gradient always starts
                    // at 0% and ends at 100%, to make following logic clearer (?).
                    auto a0 = aGradientStops.find( 0.0 );
                    if( a0 == aGradientStops.end() )
                    {
                        // temp variable required
                        Color aFirstColor(aGradientStops.begin()->second);
                        aGradientStops.emplace( 0.0, aFirstColor );
                    }

                    auto a1 = aGradientStops.find( 1.0 );
                    if( a1 == aGradientStops.end() )
                    {
                        // ditto
                        Color aLastColor(aGradientStops.rbegin()->second);
                        aGradientStops.emplace( 1.0, aLastColor );
                    }

                    // Check if the gradient is symmetric, which we will emulate with an "axial" gradient.
                    bool bSymmetric(true);
                    {
                        GradientFillProperties::GradientStopMap::const_iterator aItA( aGradientStops.begin() );
                        GradientFillProperties::GradientStopMap::const_iterator aItZ(std::prev(aGradientStops.end()));
                        assert(aItZ != aGradientStops.end());
                        while( bSymmetric && aItA->first < aItZ->first )
                        {
                            if (!aItA->second.equals(aItZ->second, rGraphicHelper, nPhClr))
                                bSymmetric = false;
                            else
                            {
                                ++aItA;
                                aItZ = std::prev(aItZ);
                            }
                        }
                        // Don't be fooled if the middlemost stop isn't at 0.5.
                        if( bSymmetric && aItA == aItZ && aItA->first != 0.5 )
                            bSymmetric = false;

                        // If symmetric, do the rest of the logic for just a half.
                        if( bSymmetric )
                        {
                            // aItZ already points to the colour for the middle, but insert a fake stop at the
                            // exact middle if necessary.
                            if( aItA->first != aItZ->first )
                            {
                                Color aMiddleColor = aItZ->second;
                                auto a05 = aGradientStops.find( 0.5 );

                                if( a05 != aGradientStops.end() )
                                    a05->second = aMiddleColor;
                                else
                                    aGradientStops.emplace( 0.5, aMiddleColor );
                            }
                            // Drop the rest of the stops
                            while( aGradientStops.rbegin()->first > 0.5 )
                                aGradientStops.erase( aGradientStops.rbegin()->first );
                        }
                    }

                    SAL_INFO("oox.drawingml.gradient", "symmetric: " << (bSymmetric ? "YES" : "NO") <<
                             ", number of stops: " << aGradientStops.size());
                    size_t nIndex = 0;
                    for (auto const& gradientStop : aGradientStops)
                        SAL_INFO("oox.drawingml.gradient", "  " << nIndex++ << ": " <<
                                 gradientStop.first << ": " <<
                                 std::hex << sal_Int32(gradientStop.second.getColor( rGraphicHelper, nPhClr )) << std::dec <<
                                 "@" << (100 - gradientStop.second.getTransparency()) << "%");

                    // Now estimate the simple LO style gradient (only two stops, at n% and 100%, where n ==
                    // the "border") that best emulates the gradient between begin() and prior(end()).

                    // First look for the largest segment in the gradient.
                    GradientFillProperties::GradientStopMap::iterator aIt(aGradientStops.begin());
                    double nWidestWidth = -1;
                    GradientFillProperties::GradientStopMap::iterator aWidestSegmentStart(aIt);
                    ++aIt;
                    while( aIt != aGradientStops.end() )
                    {
                        if (aIt->first - std::prev(aIt)->first > nWidestWidth)
                        {
                            nWidestWidth = aIt->first - std::prev(aIt)->first;
                            aWidestSegmentStart = std::prev(aIt);
                        }
                        ++aIt;
                    }
                    assert( nWidestWidth >= 0 );

                    double nBorder = 0;
                    bool bSwap(false);

                    // Do we have just two segments, and either one is of uniform colour, or three or more
                    // segments, and the widest one is the first or last one, and is it of uniform colour? If
                    // so, deduce the border from it, and drop that segment.
                    if( aGradientStops.size() == 3 &&
                        aGradientStops.begin()->second.getColor(rGraphicHelper, nPhClr) == std::next(aGradientStops.begin())->second.getColor(rGraphicHelper, nPhClr) &&
                        aGradientStops.begin()->second.getTransparency() == std::next(aGradientStops.begin())->second.getTransparency())
                    {
                        // Two segments, first is uniformly coloured
                        SAL_INFO("oox.drawingml.gradient", "two segments, first is uniformly coloured");
                        nBorder = std::next(aGradientStops.begin())->first - aGradientStops.begin()->first;
                        aGradientStops.erase(aGradientStops.begin());
                        aWidestSegmentStart = aGradientStops.begin();
                    }
                    else if( !bSymmetric &&
                             aGradientStops.size() == 3 &&
                             std::next(aGradientStops.begin())->second.getColor(rGraphicHelper, nPhClr) == std::prev(aGradientStops.end())->second.getColor(rGraphicHelper, nPhClr) &&
                             std::next(aGradientStops.begin())->second.getTransparency() == std::prev(aGradientStops.end())->second.getTransparency())
                    {
                        // Two segments, second is uniformly coloured
                        SAL_INFO("oox.drawingml.gradient", "two segments, second is uniformly coloured");
                        auto aNext = std::next(aGradientStops.begin());
                        auto aPrev = std::prev(aGradientStops.end());
                        assert(aPrev != aGradientStops.end());
                        nBorder = aPrev->first - aNext->first;
                        aGradientStops.erase(aNext);
                        aWidestSegmentStart = aGradientStops.begin();
                        bSwap = true;
                        nShapeRotation = 180*60000 - nShapeRotation;
                    }
                    else if( !bSymmetric &&
                             aGradientStops.size() >= 4 &&
                             aWidestSegmentStart->second.getColor( rGraphicHelper, nPhClr ) == std::next(aWidestSegmentStart)->second.getColor(rGraphicHelper, nPhClr) &&
                             aWidestSegmentStart->second.getTransparency() == std::next(aWidestSegmentStart)->second.getTransparency() &&
                             ( aWidestSegmentStart == aGradientStops.begin() ||
                               std::next(aWidestSegmentStart) == std::prev(aGradientStops.end())))
                    {
                        // Not symmetric, three or more segments, the widest is first or last and is uniformly coloured
                        SAL_INFO("oox.drawingml.gradient", "first or last segment is widest and is uniformly coloured");
                        nBorder = std::next(aWidestSegmentStart)->first - aWidestSegmentStart->first;

                        // If it's the last segment that is uniformly coloured, rotate the gradient 180
                        // degrees and swap start and end colours
                        if (std::next(aWidestSegmentStart) == std::prev(aGradientStops.end()))
                        {
                            bSwap = true;
                            nShapeRotation = 180*60000 - nShapeRotation;
                        }

                        aGradientStops.erase( aWidestSegmentStart++ );

                        // Look for which is widest now
                        aIt = std::next(aGradientStops.begin());
                        nWidestWidth = -1;
                        while( aIt != aGradientStops.end() )
                        {
                            if (aIt->first - std::prev(aIt)->first > nWidestWidth)
                            {
                                nWidestWidth = aIt->first - std::prev(aIt)->first;
                                aWidestSegmentStart = std::prev(aIt);
                            }
                            ++aIt;
                        }
                    }
                    SAL_INFO("oox.drawingml.gradient", "widest segment start: " << aWidestSegmentStart->first << ", border: " << nBorder);
                    assert( (!bSymmetric && !bSwap) || !(bSymmetric && bSwap) );

                    // Now we have a potential border and a largest segment. Use those.

                    aGradient.Style = bSymmetric ? awt::GradientStyle_AXIAL : awt::GradientStyle_LINEAR;
                    sal_Int32 nShadeAngle = maGradientProps.moShadeAngle.value_or( 0 );
                    // Adjust for flips
                    if ( bFlipH )
                        nShadeAngle = 180*60000 - nShadeAngle;
                    if ( bFlipV )
                        nShadeAngle = -nShadeAngle;
                    sal_Int32 nDmlAngle = nShadeAngle + nShapeRotation;
                    // convert DrawingML angle (in 1/60000 degrees) to API angle (in 1/10 degrees)
                    aGradient.Angle = static_cast< sal_Int16 >( (8100 - (nDmlAngle / (PER_DEGREE / 10))) % 3600 );
                    Color aStartColor, aEndColor;

                    // Make a note where the widest segment stops, because we will try to grow it next.
                    auto aWidestSegmentEnd = std::next(aWidestSegmentStart);

                    // Try to grow the widest segment backwards: if a previous segment has the same
                    // color, just different transparency, include it.
                    while (aWidestSegmentStart != aGradientStops.begin())
                    {
                        auto it = std::prev(aWidestSegmentStart);
                        if (it->second.getColor(rGraphicHelper, nPhClr)
                            != aWidestSegmentStart->second.getColor(rGraphicHelper, nPhClr))
                        {
                            break;
                        }

                        aWidestSegmentStart = it;
                    }

                    // Try to grow the widest segment forward: if a next segment has the same
                    // color, just different transparency, include it.
                    while (aWidestSegmentEnd != std::prev(aGradientStops.end()))
                    {
                        auto it = std::next(aWidestSegmentEnd);
                        if (it->second.getColor(rGraphicHelper, nPhClr)
                            != aWidestSegmentEnd->second.getColor(rGraphicHelper, nPhClr))
                        {
                            break;
                        }

                        aWidestSegmentEnd = it;
                    }

                    assert(aWidestSegmentEnd != aGradientStops.end());

                    if( bSymmetric )
                    {
                        aStartColor = aWidestSegmentEnd->second;
                        aEndColor = aWidestSegmentStart->second;
                        nBorder *= 2;
                    }
                    else if( bSwap )
                    {
                        aStartColor = aWidestSegmentEnd->second;
                        aEndColor = aWidestSegmentStart->second;
                    }
                    else
                    {
                        aStartColor = aWidestSegmentStart->second;
                        aEndColor = aWidestSegmentEnd->second;
                    }

                    SAL_INFO("oox.drawingml.gradient", "start color: " << std::hex << sal_Int32(aStartColor.getColor( rGraphicHelper, nPhClr )) << std::dec <<
                             "@" << (100-aStartColor.getTransparency()) << "%"
                             ", end color: " << std::hex << sal_Int32(aEndColor.getColor( rGraphicHelper, nPhClr )) << std::dec <<
                             "@" << (100-aEndColor.getTransparency()) << "%");

                    aGradient.StartColor = sal_Int32(aStartColor.getColor( rGraphicHelper, nPhClr ));
                    aGradient.EndColor = sal_Int32(aEndColor.getColor( rGraphicHelper, nPhClr ));

                    nStartTrans = aStartColor.hasTransparency() ? aStartColor.getTransparency()*255/100 : 0;
                    nEndTrans = aEndColor.hasTransparency() ? aEndColor.getTransparency()*255/100 : 0;

                    aGradient.Border = rtl::math::round(100*nBorder);
                }

                // for temporary backward compatibility, complete data by creating ColorStops for awt::Gradient2
                basegfx::utils::fillColorStopSequenceFromColorStops(
                    aGradient.ColorStops,
                    basegfx::ColorStops {
                        basegfx::ColorStop(0.0, ::Color(ColorTransparency, aGradient.StartColor).getBColor()),
                        basegfx::ColorStop(1.0, ::Color(ColorTransparency, aGradient.EndColor).getBColor()) });

                // push gradient or named gradient to property map
                if( rPropMap.setProperty( ShapeProperty::FillGradient, aGradient ) )
                    eFillStyle = FillStyle_GRADIENT;

                // push gradient transparency to property map
                if( nStartTrans != 0 || nEndTrans != 0 )
                {
                    awt::Gradient aGrad(aGradient);
                    uno::Any aVal;
                    aGrad.EndColor = static_cast<sal_Int32>( nEndTrans | nEndTrans << 8 | nEndTrans << 16 );
                    aGrad.StartColor = static_cast<sal_Int32>( nStartTrans | nStartTrans << 8 | nStartTrans << 16 );
                    aVal <<= aGrad;
                    rPropMap.setProperty( ShapeProperty::GradientTransparency, aGrad );
                }

            }
        break;

        case XML_blipFill:
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 94f9564..da8ef49 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -481,27 +481,6 @@ static sal_Int32 lcl_generateRandomValue()
    return comphelper::rng::uniform_int_distribution(0, 100000000-1);
}

static sal_Int32 lcl_getAlphaFromTransparenceGradient(const awt::Gradient2& rGradient, bool bStart)
{
    // Our alpha is a gray color value.
    sal_uInt8 nRed(0);

    if (rGradient.ColorStops.getLength() > 0)
    {
        if (bStart)
            nRed = static_cast<sal_uInt8>(rGradient.ColorStops[0].StopColor.Red * 255.0);
        else
            nRed = static_cast<sal_uInt8>(rGradient.ColorStops[rGradient.ColorStops.getLength() - 1].StopColor.Red * 255.0);
    }
    else
    {
        nRed = ::Color(ColorTransparency, bStart ? rGradient.StartColor : rGradient.EndColor).GetRed();
    }

    // drawingML alpha is a percentage on a 0..100000 scale.
    return (255 - nRed) * oox::drawingml::MAX_PERCENT / 255;
}

bool DataLabelsRange::empty() const
{
    return maLabels.empty();
@@ -1945,7 +1924,20 @@ void ChartExport::exportSolidFill(const Reference< XPropertySet >& xPropSet)

        if (!bNeedGradientFill && 0 != aTransparenceGradient.StartColor)
        {
            nAlpha = lcl_getAlphaFromTransparenceGradient(aTransparenceGradient, true);
            // Our alpha is a gray color value.
            sal_uInt8 nRed(0);

            if (aTransparenceGradient.ColorStops.getLength() > 0)
            {
                nRed = static_cast<sal_uInt8>(aTransparenceGradient.ColorStops[0].StopColor.Red * 255.0);
            }
            else
            {
                nRed = ::Color(ColorTransparency, aTransparenceGradient.StartColor).GetRed();
            }

            // drawingML alpha is a percentage on a 0..100000 scale.
            nAlpha = (255 - nRed) * oox::drawingml::MAX_PERCENT / 255;
        }
    }
    // write XML
@@ -1954,7 +1946,7 @@ void ChartExport::exportSolidFill(const Reference< XPropertySet >& xPropSet)
        // no longer create copy/PseudoColorGradient, use new API of
        // WriteGradientFill to express fix fill color
        mpFS->startElementNS(XML_a, XML_gradFill, XML_rotWithShape, "0");
        WriteGradientFill(nullptr, nFillColor, &aTransparenceGradient, 0);
        WriteGradientFill(nullptr, nFillColor, &aTransparenceGradient);
        mpFS->endElementNS(XML_a, XML_gradFill);
    }
    else
@@ -2034,7 +2026,7 @@ void ChartExport::exportGradientFill( const Reference< XPropertySet >& xPropSet 
                uno::Reference< container::XNameAccess > xTransparenceGradient(xFact->createInstance("com.sun.star.drawing.TransparencyGradientTable"), uno::UNO_QUERY);
                uno::Any rTransparenceValue = xTransparenceGradient->getByName(sFillTransparenceGradientName);
                basegfx::utils::fillGradient2FromAny(aTransparenceGradient, rTransparenceValue);
                WriteGradientFill(&aGradient, 0, &aTransparenceGradient, 0);
                WriteGradientFill(&aGradient, 0, &aTransparenceGradient);
            }
            else if (GetProperty(xPropSet, "FillTransparence") )
            {
@@ -2042,11 +2034,12 @@ void ChartExport::exportGradientFill( const Reference< XPropertySet >& xPropSet 
                // WriteGradientFill to express fix transparency
                sal_Int32 nTransparency = 0;
                mAny >>= nTransparency;
                WriteGradientFill(&aGradient, 0, nullptr, nTransparency);
                // nTransparency is [0..100]%
                WriteGradientFill(&aGradient, 0, nullptr, nTransparency * 0.01);
            }
            else
            {
                WriteGradientFill(&aGradient, 0, &aTransparenceGradient, 0);
                WriteGradientFill(&aGradient, 0, &aTransparenceGradient);
            }

            mpFS->endElementNS(XML_a, XML_gradFill);
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 77c4c1b..ad07308 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -152,28 +152,6 @@ using ::sax_fastparser::FastSerializerHelper;

namespace
{
/// Extracts start or end alpha information from a transparency gradient.
sal_Int32 GetAlphaFromTransparenceGradient(const awt::Gradient2& rGradient, bool bStart)
{
    // Our alpha is a gray color value.
    sal_uInt8 nRed(0);

    if (rGradient.ColorStops.getLength() > 0)
    {
        if (bStart)
            nRed = static_cast<sal_uInt8>(rGradient.ColorStops[0].StopColor.Red * 255.0);
        else
            nRed = static_cast<sal_uInt8>(rGradient.ColorStops[rGradient.ColorStops.getLength() - 1].StopColor.Red * 255.0);
    }
    else
    {
        nRed = ::Color(ColorTransparency, bStart ? rGradient.StartColor : rGradient.EndColor).GetRed();
    }

    // drawingML alpha is a percentage on a 0..100000 scale.
    return (255 - nRed) * oox::drawingml::MAX_PERCENT / 255;
}

const char* g_aPredefinedClrNames[] = {
    "dk1",
    "lt1",
@@ -509,7 +487,20 @@ void DrawingML::WriteSolidFill( const Reference< XPropertySet >& rXPropSet )

        if (!bNeedGradientFill && 0 != aTransparenceGradient.StartColor)
        {
            nAlpha = GetAlphaFromTransparenceGradient(aTransparenceGradient, true);
            // Our alpha is a gray color value.
            sal_uInt8 nRed(0);

            if (aTransparenceGradient.ColorStops.getLength() > 0)
            {
                nRed = static_cast<sal_uInt8>(aTransparenceGradient.ColorStops[0].StopColor.Red * 255.0);
            }
            else
            {
                nRed = ::Color(ColorTransparency, aTransparenceGradient.StartColor).GetRed();
            }

            // drawingML alpha is a percentage on a 0..100000 scale.
            nAlpha = (255 - nRed) * oox::drawingml::MAX_PERCENT / 255;
        }
    }

@@ -519,7 +510,7 @@ void DrawingML::WriteSolidFill( const Reference< XPropertySet >& rXPropSet )
        // no longer create copy/PseudoColorGradient, use new API of
        // WriteGradientFill to express fix fill color
        mpFS->startElementNS(XML_a, XML_gradFill, XML_rotWithShape, "0");
        WriteGradientFill(nullptr, nFillColor, &aTransparenceGradient, 0);
        WriteGradientFill(nullptr, nFillColor, &aTransparenceGradient);
        mpFS->endElementNS( XML_a, XML_gradFill );
    }
    else if ( nFillColor != nOriginalColor )
@@ -600,19 +591,12 @@ bool DrawingML::WriteSchemeColor(OUString const& rPropertyName, const uno::Refer
    return true;
}

void DrawingML::WriteGradientStop2(double fOffset, const basegfx::BColor& rColor, const basegfx::BColor& rAlpha)
void DrawingML::WriteGradientStop(double fOffset, const basegfx::BColor& rColor, const basegfx::BColor& rAlpha)
{
    mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(static_cast<sal_uInt32>(fOffset * 100000)));
    mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(basegfx::fround(fOffset * 100000)));
    WriteColor(
        ::Color(rColor),
        static_cast<sal_Int32>((1.0 - rAlpha.luminance()) * oox::drawingml::MAX_PERCENT));
    mpFS->endElementNS( XML_a, XML_gs );
}

void DrawingML::WriteGradientStop(sal_uInt16 nStop, ::Color nColor, sal_Int32 nAlpha)
{
    mpFS->startElementNS(XML_a, XML_gs, XML_pos, OString::number(nStop * 1000));
    WriteColor(nColor, nAlpha);
        basegfx::fround((1.0 - rAlpha.luminance()) * oox::drawingml::MAX_PERCENT));
    mpFS->endElementNS( XML_a, XML_gs );
}

@@ -706,7 +690,7 @@ void DrawingML::WriteGradientFill( const Reference< XPropertySet >& rXPropSet )

        awt::Gradient2 aTransparenceGradient;
        awt::Gradient2* pTransparenceGradient(nullptr);
        sal_Int32 nTransparency(0);
        double fTransparency(0.0);
        OUString sFillTransparenceGradientName;

        if (GetProperty(rXPropSet, "FillTransparenceGradientName")
@@ -722,10 +706,13 @@ void DrawingML::WriteGradientFill( const Reference< XPropertySet >& rXPropSet )
        {
            // no longer create PseudoTransparencyGradient, use new API of
            // WriteGradientFill to express fix transparency
            sal_Int32 nTransparency(0);
            mAny >>= nTransparency;
            // nTransparency is [0..100]%
            fTransparency = nTransparency * 0.01;
        }

        WriteGradientFill(&aGradient, 0, pTransparenceGradient, nTransparency);
        WriteGradientFill(&aGradient, 0, pTransparenceGradient, fTransparency);

        mpFS->endElementNS(XML_a, XML_gradFill);
    }
@@ -790,14 +777,14 @@ void DrawingML::WriteGrabBagGradientFill( const Sequence< PropertyValue >& aGrad
    }
}

void DrawingML::WriteGradientFill2(
void DrawingML::WriteGradientFill(
    const awt::Gradient2* pColorGradient, sal_Int32 nFixColor,
    const awt::Gradient2* pTransparenceGradient, sal_Int32 nFixTransparence)
    const awt::Gradient2* pTransparenceGradient, double fFixTransparence)
{
    basegfx::ColorStops aColorStops;
    basegfx::ColorStops aAlphaStops;
    basegfx::BColor aSingleColor(::Color(ColorTransparency, nFixColor).getBColor());
    basegfx::BColor aSingleAlpha(::Color(ColorTransparency, nFixTransparence).getBColor().luminance());
    basegfx::BColor aSingleAlpha(fFixTransparence);
    awt::Gradient2 aGradient;

    if (nullptr != pColorGradient)
@@ -865,10 +852,21 @@ void DrawingML::WriteGradientFill2(
                aRevCurrAlpha++;
            }

            // add non-mirrored gradients, translated and scaled to [0.5 .. 1.0]
            basegfx::ColorStops::const_iterator aCurrColor(aColorStops.begin());
            basegfx::ColorStops::const_iterator aCurrAlpha(aAlphaStops.begin());

            if (basegfx::fTools::equalZero(aCurrColor->getStopOffset()))
            {
                // Caution: do not add 1st entry again, that would be double since it was
                // already added as last element of the inverse run above. But only if
                // the gradient has a start entry for 0.0 aka StartColor, else it is correct.
                // Since aColorStops and aAlphaStops are already syched (see
                // synchronizeColorStops above), testing one of them is sufficient here.
                aCurrColor++;
                aCurrAlpha++;
            }

            // add non-mirrored gradients, translated and scaled to [0.5 .. 1.0]
            while (aCurrColor != aColorStops.end() && aCurrAlpha != aAlphaStops.end())
            {
                aNewColorStops.emplace_back((aCurrColor->getStopOffset() * 0.5) + 0.5, aCurrColor->getStopColor());
@@ -907,7 +905,7 @@ void DrawingML::WriteGradientFill2(

    while (aCurrColor != aColorStops.end() && aCurrAlpha != aAlphaStops.end())
    {
        WriteGradientStop2(
        WriteGradientStop(
            aCurrColor->getStopOffset(),
            aCurrColor->getStopColor(),
            aCurrAlpha->getStopColor());
@@ -935,131 +933,6 @@ void DrawingML::WriteGradientFill2(
    }
}

void DrawingML::WriteGradientFill(
    const awt::Gradient2* pColorGradient, sal_Int32 nFixColor,
    const awt::Gradient2* pTransparenceGradient, sal_Int32 nFixTransparence)
{
    static bool bMCGR(nullptr != std::getenv("MCGR_TEST"));

    if (bMCGR)
    {
        WriteGradientFill2(pColorGradient, nFixColor, pTransparenceGradient, nFixTransparence);
        return;
    }

    // evtl need a temporary pseudo-color gradient
    awt::Gradient2 aColorGradient;

    if (nullptr == pColorGradient && nullptr == pTransparenceGradient)
    {
        // this is an error: *one* gradient has to be given
        return;
    }

    if (nullptr == pColorGradient)
    {
        // create complete temporary copy to keep orig export working
        aColorGradient = *pTransparenceGradient;

        // change parameters specific for PseudoColorGradient
        aColorGradient.StartIntensity = 100;
        aColorGradient.EndIntensity = 100;
        aColorGradient.StartColor = nFixColor;
        aColorGradient.EndColor = nFixColor;

        basegfx::utils::fillColorStopSequenceFromColorStops(
            aColorGradient.ColorStops,
            basegfx::ColorStops {
                basegfx::ColorStop(0.0, ::Color(ColorTransparency, nFixColor).getBColor()) });

        pColorGradient = &aColorGradient;
    }

    sal_Int32 nStartAlpha(MAX_PERCENT);
    sal_Int32 nEndAlpha(MAX_PERCENT);

    if (nullptr == pTransparenceGradient)
    {
        nStartAlpha = nEndAlpha = (MAX_PERCENT - (PER_PERCENT * nFixTransparence));
    }
    else
    {
        nStartAlpha = GetAlphaFromTransparenceGradient(*pTransparenceGradient, true);
        nEndAlpha = GetAlphaFromTransparenceGradient(*pTransparenceGradient, false);
    }

    switch( pColorGradient->Style )
    {
        default:
        case awt::GradientStyle_LINEAR:
        {
            mpFS->startElementNS(XML_a, XML_gsLst);
            WriteGradientStop(pColorGradient->Border, ColorWithIntensity(pColorGradient->StartColor, pColorGradient->StartIntensity),
                              nStartAlpha);
            WriteGradientStop(100, ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                              nEndAlpha);
            mpFS->endElementNS( XML_a, XML_gsLst );
            mpFS->singleElementNS(
                XML_a, XML_lin, XML_ang,
                OString::number(((3600 - pColorGradient->Angle + 900) * 6000) % 21600000));
            break;
        }

        case awt::GradientStyle_AXIAL:
        {
            mpFS->startElementNS(XML_a, XML_gsLst);
            WriteGradientStop(0, ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                              nEndAlpha);
            if (pColorGradient->Border > 0 && pColorGradient->Border < 100)
            {
                WriteGradientStop(pColorGradient->Border/2,
                                  ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                                  nEndAlpha);
            }
            WriteGradientStop(50, ColorWithIntensity(pColorGradient->StartColor, pColorGradient->StartIntensity),
                              nStartAlpha);
            if (pColorGradient->Border > 0 && pColorGradient->Border < 100)
            {
                WriteGradientStop(100 - pColorGradient->Border/2,
                                  ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                                  nEndAlpha);
            }
            WriteGradientStop(100, ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                              nEndAlpha);
            mpFS->endElementNS(XML_a, XML_gsLst);
            mpFS->singleElementNS(
                XML_a, XML_lin, XML_ang,
                OString::number(((3600 - pColorGradient->Angle + 900) * 6000) % 21600000));
            break;
        }

        case awt::GradientStyle_RADIAL:
        case awt::GradientStyle_ELLIPTICAL:
        case awt::GradientStyle_RECT:
        case awt::GradientStyle_SQUARE:
        {
            mpFS->startElementNS(XML_a, XML_gsLst);
            WriteGradientStop(0, ColorWithIntensity(pColorGradient->EndColor, pColorGradient->EndIntensity),
                              nEndAlpha);
            if (pColorGradient->Border > 0 && pColorGradient->Border < 100)
            {
                // Map border to an additional gradient stop, which has the
                // same color as the final stop.
                WriteGradientStop(100 - pColorGradient->Border,
                                  ColorWithIntensity(pColorGradient->StartColor, pColorGradient->StartIntensity),
                                  nStartAlpha);
            }
            WriteGradientStop(100,
                              ColorWithIntensity(pColorGradient->StartColor, pColorGradient->StartIntensity),
                              nStartAlpha);
            mpFS->endElementNS(XML_a, XML_gsLst);

            WriteGradientPath(*pColorGradient, mpFS, pColorGradient->Style == awt::GradientStyle_RADIAL || pColorGradient->Style == awt::GradientStyle_ELLIPTICAL);
            break;
        }
    }
}

void DrawingML::WriteLineArrow( const Reference< XPropertySet >& rXPropSet, bool bLineStart )
{
    ESCHER_LineEnd eLineEnd;
diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx
index 2e96c61..029d542 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -787,9 +787,10 @@ void FillModel::pushToPropMap( ShapePropertyMap& rPropMap, const GraphicHelper& 
                        const Color& rOuterColor = bOuterToInner ? aColor1 : aColor2;
                        const Color& rInnerColor = bOuterToInner ? aColor2 : aColor1;

                        // add in order of offset
                        lcl_setGradientStop( aFillProps.maGradientProps.maGradientStops, 0.0, rOuterColor);
                        lcl_setGradientStop( aFillProps.maGradientProps.maGradientStops, 0.5, rInnerColor);
                        lcl_setGradientStop( aFillProps.maGradientProps.maGradientStops, 1.0, rOuterColor);
                        lcl_setGradientStop( aFillProps.maGradientProps.maGradientStops, 0.5, rInnerColor );
                    }
                    else    // focus of -100%, 0%, and 100% is linear gradient
                    {
diff --git a/sc/qa/unit/subsequent_filters_test3.cxx b/sc/qa/unit/subsequent_filters_test3.cxx
index 400a2fb..779e07f 100644
--- a/sc/qa/unit/subsequent_filters_test3.cxx
+++ b/sc/qa/unit/subsequent_filters_test3.cxx
@@ -1628,12 +1628,16 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest3, testTdf129789)

        CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, rStyleItemH2.GetValue());
        const XFillGradientItem& rGradientItem = pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT);
        const basegfx::ColorStops& rColorStops(rGradientItem.GetGradientValue().GetColorStops());

        CPPUNIT_ASSERT_EQUAL(size_t(2), rColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(
            Color(0xdde8cb),
            Color(rGradientItem.GetGradientValue().GetColorStops().front().getStopColor()));
        CPPUNIT_ASSERT_EQUAL(
            Color(0xffd7d7),
            Color(rGradientItem.GetGradientValue().GetColorStops().back().getStopColor()));
            rColorStops[0].getStopColor(),
            basegfx::BColor(0.8666666666666667, 0.90980392156862744, 0.79607843137254897));
        CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(rColorStops[1].getStopColor(),
                             basegfx::BColor(1.0, 0.84313725490196079, 0.84313725490196079));

        SdrCaptionObj* const pCaptionH9 = checkCaption(*pDoc, ScAddress(7, 8, 0), false);

@@ -1641,12 +1645,16 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest3, testTdf129789)

        CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, rStyleItemH9.GetValue());
        const XFillGradientItem& rGradientItem2 = pCaptionH2->GetMergedItem(XATTR_FILLGRADIENT);
        const basegfx::ColorStops& rColorStops2(rGradientItem2.GetGradientValue().GetColorStops());

        CPPUNIT_ASSERT_EQUAL(size_t(2), rColorStops2.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops2[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(
            Color(0xdde8cb),
            Color(rGradientItem2.GetGradientValue().GetColorStops().front().getStopColor()));
        CPPUNIT_ASSERT_EQUAL(
            Color(0xffd7d7),
            Color(rGradientItem2.GetGradientValue().GetColorStops().back().getStopColor()));
            rColorStops2[0].getStopColor(),
            basegfx::BColor(0.8666666666666667, 0.90980392156862744, 0.79607843137254897));
        CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops2[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(rColorStops2[1].getStopColor(),
                             basegfx::BColor(1.0, 0.84313725490196079, 0.84313725490196079));
    }

    {
diff --git a/sd/qa/unit/data/xml/n819614_0.xml b/sd/qa/unit/data/xml/n819614_0.xml
index 8048bbf..3635f2d 100644
--- a/sd/qa/unit/data/xml/n819614_0.xml
+++ b/sd/qa/unit/data/xml/n819614_0.xml
@@ -3133,7 +3133,7 @@
   </XShape>
   <XShape positionX="11049" positionY="2544" sizeX="2531" sizeY="1078" type="com.sun.star.drawing.CustomShape" text="Test1&#10;" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3195,7 +3195,7 @@
   </XShape>
   <XShape positionX="182" positionY="4529" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="A " fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3257,7 +3257,7 @@
   </XShape>
   <XShape positionX="792" positionY="5919" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="A1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3381,7 +3381,7 @@
   </XShape>
   <XShape positionX="792" positionY="7189" sizeX="2728" sizeY="1268" type="com.sun.star.drawing.CustomShape" text="A3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3443,7 +3443,7 @@
   </XShape>
   <XShape positionX="792" positionY="8671" sizeX="2653" sizeY="1156" type="com.sun.star.drawing.CustomShape" text="A4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3505,7 +3505,7 @@
   </XShape>
   <XShape positionX="791" positionY="9939" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="A5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3567,7 +3567,7 @@
   </XShape>
   <XShape positionX="741" positionY="11210" sizeX="2850" sizeY="1151" type="com.sun.star.drawing.CustomShape" text="A6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3629,7 +3629,7 @@
   </XShape>
   <XShape positionX="792" positionY="12483" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="A7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3691,7 +3691,7 @@
   </XShape>
   <XShape positionX="1430" positionY="13753" sizeX="2683" sizeY="1036" type="com.sun.star.drawing.CustomShape" text="A7i" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3753,7 +3753,7 @@
   </XShape>
   <XShape positionX="1369" positionY="14901" sizeX="2694" sizeY="1062" type="com.sun.star.drawing.CustomShape" text="A7ii" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3815,7 +3815,7 @@
   </XShape>
   <XShape positionX="730" positionY="16071" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="A8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3877,7 +3877,7 @@
   </XShape>
   <XShape positionX="4319" positionY="4529" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="B" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -3939,7 +3939,7 @@
   </XShape>
   <XShape positionX="5005" positionY="5921" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4001,7 +4001,7 @@
   </XShape>
   <XShape positionX="4885" positionY="17689" sizeX="2922" sizeY="1148" type="com.sun.star.drawing.CustomShape" text="B2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4063,7 +4063,7 @@
   </XShape>
   <XShape positionX="4946" positionY="7277" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4125,7 +4125,7 @@
   </XShape>
   <XShape positionX="4946" positionY="8585" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4187,7 +4187,7 @@
   </XShape>
   <XShape positionX="4946" positionY="9893" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4249,7 +4249,7 @@
   </XShape>
   <XShape positionX="4946" positionY="11200" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4311,7 +4311,7 @@
   </XShape>
   <XShape positionX="5382" positionY="12508" sizeX="2663" sizeY="1210" type="com.sun.star.drawing.CustomShape" text="B6i" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4373,7 +4373,7 @@
   </XShape>
   <XShape positionX="4946" positionY="13816" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B7" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4435,7 +4435,7 @@
   </XShape>
   <XShape positionX="4946" positionY="15124" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B8" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4497,7 +4497,7 @@
   </XShape>
   <XShape positionX="4946" positionY="16432" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="B9" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4559,7 +4559,7 @@
   </XShape>
   <XShape positionX="7973" positionY="4529" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="C" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4621,7 +4621,7 @@
   </XShape>
   <XShape positionX="8659" positionY="5921" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="C1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4683,7 +4683,7 @@
   </XShape>
   <XShape positionX="8659" positionY="7201" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="C2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4745,7 +4745,7 @@
   </XShape>
   <XShape positionX="8659" positionY="8480" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="C3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4807,7 +4807,7 @@
   </XShape>
   <XShape positionX="8659" positionY="9759" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="C4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4869,7 +4869,7 @@
   </XShape>
   <XShape positionX="8659" positionY="11039" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="C5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4931,7 +4931,7 @@
   </XShape>
   <XShape positionX="8686" positionY="12309" sizeX="2663" sizeY="1100" type="com.sun.star.drawing.CustomShape" text="C6" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -4993,7 +4993,7 @@
   </XShape>
   <XShape positionX="11253" positionY="4526" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="D" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5055,7 +5055,7 @@
   </XShape>
   <XShape positionX="11817" positionY="5866" sizeX="2743" sizeY="1365" type="com.sun.star.drawing.CustomShape" text="D1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5117,7 +5117,7 @@
   </XShape>
   <XShape positionX="12481" positionY="7416" sizeX="2477" sizeY="1087" type="com.sun.star.drawing.CustomShape" text="D1i" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5179,7 +5179,7 @@
   </XShape>
   <XShape positionX="12489" positionY="8677" sizeX="2466" sizeY="1007" type="com.sun.star.drawing.CustomShape" text="D1ii" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5303,7 +5303,7 @@
   </XShape>
   <XShape positionX="11990" positionY="16505" sizeX="2743" sizeY="1033" type="com.sun.star.drawing.CustomShape" text="D2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5427,7 +5427,7 @@
   </XShape>
   <XShape positionX="11991" positionY="10999" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="D4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5489,7 +5489,7 @@
   </XShape>
   <XShape positionX="11991" positionY="12479" sizeX="2973" sizeY="1337" type="com.sun.star.drawing.CustomShape" text="D5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5551,7 +5551,7 @@
   </XShape>
   <XShape positionX="12627" positionY="13962" sizeX="2444" sizeY="1183" type="com.sun.star.drawing.CustomShape" text="D5i" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5613,7 +5613,7 @@
   </XShape>
   <XShape positionX="12627" positionY="15233" sizeX="2444" sizeY="1143" type="com.sun.star.drawing.CustomShape" text="D5ii" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5675,7 +5675,7 @@
   </XShape>
   <XShape positionX="14956" positionY="4526" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="E" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5737,7 +5737,7 @@
   </XShape>
   <XShape positionX="15642" positionY="5918" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="E1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5799,7 +5799,7 @@
   </XShape>
   <XShape positionX="15642" positionY="7198" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="E2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5861,7 +5861,7 @@
   </XShape>
   <XShape positionX="15642" positionY="8477" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="E3" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5923,7 +5923,7 @@
   </XShape>
   <XShape positionX="18239" positionY="4526" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="F" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -5985,7 +5985,7 @@
   </XShape>
   <XShape positionX="18875" positionY="5947" sizeX="2740" sizeY="1130" type="com.sun.star.drawing.CustomShape" text="F1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6047,7 +6047,7 @@
   </XShape>
   <XShape positionX="19301" positionY="7223" sizeX="2636" sizeY="968" type="com.sun.star.drawing.CustomShape" text="F1i" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6109,7 +6109,7 @@
   </XShape>
   <XShape positionX="18972" positionY="11059" sizeX="2629" sizeY="1230" type="com.sun.star.drawing.CustomShape" text="F2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6233,7 +6233,7 @@
   </XShape>
   <XShape positionX="18972" positionY="8371" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="F4" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6295,7 +6295,7 @@
   </XShape>
   <XShape positionX="18972" positionY="9715" sizeX="2743" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="F5" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6357,7 +6357,7 @@
   </XShape>
   <XShape positionX="22111" positionY="4457" sizeX="2743" sizeY="1244" type="com.sun.star.drawing.CustomShape" text="G" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6419,7 +6419,7 @@
   </XShape>
   <XShape positionX="22750" positionY="5947" sizeX="2557" sizeY="1131" type="com.sun.star.drawing.CustomShape" text="G1" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
@@ -6481,7 +6481,7 @@
   </XShape>
   <XShape positionX="22750" positionY="7224" sizeX="2421" sizeY="1100" type="com.sun.star.drawing.CustomShape" text="G2" fontHeight="18.000000" fontColor="ffffffff" textAutoGrowHeight="false" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="12" textRightDistance="12" textUpperDistance="12" textLowerDistance="12" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="GRADIENT" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
    <FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="35" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillGradient style="LINEAR" startColor="ffffff" endColor="ffffff" angle="1800" border="0" xOffset="0" yOffset="0" startIntensity="100" endIntensity="100" stepCount="0"/>
    <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
    <FillBitmap width="32" height="32"/>
    <LineDash style="RECT" dots="1" dotLen="20" dashes="1" dashLen="20" distance="20"/>
diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx
index 0c0815a..b9f1fb7 100644
--- a/sd/qa/unit/export-tests-ooxml1.cxx
+++ b/sd/qa/unit/export-tests-ooxml1.cxx
@@ -1212,7 +1212,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf94238)
    uno::Reference<beans::XPropertySet> xShape(getShape(0, xPage));
    CPPUNIT_ASSERT(xShape.is());

    awt::Gradient aGradient;
    awt::Gradient2 aGradient;
    CPPUNIT_ASSERT(xShape->getPropertyValue("FillGradient") >>= aGradient);

    // Without the accompanying fix in place, this test would have failed with
@@ -1222,13 +1222,25 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf94238)
    // - aGradient.Border was 0
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_RADIAL, aGradient.Style);
    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(100), aGradient.YOffset);
    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(39), aGradient.Border);
    // MCGR: 39->0 no border needed anyore with ooxml import
    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(0), aGradient.Border);

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    // Without the accompanying fix in place, this test would have failed with
    // 'Expected: 0, Actual  : 10592673', i.e. the start color of the gradient
    // was incorrect.
    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0x0), aGradient.StartColor);
    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0x8B8B8B), aGradient.EndColor);
    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.39000000000000001));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(
        aColorStops[2].getStopColor(),
        basegfx::BColor(0.54509803921568623, 0.54509803921568623, 0.54509803921568623));
}

CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testPictureTransparency)
@@ -1470,11 +1482,21 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf128345GradientAxial)
    saveAndReload("Impress Office Open XML");
    uno::Reference<beans::XPropertySet> xShapePropSet(getShapeFromPage(0, 0));

    awt::Gradient aTransparenceGradient;
    awt::Gradient2 aTransparenceGradient;
    xShapePropSet->getPropertyValue("FillTransparenceGradient") >>= aTransparenceGradient;
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aTransparenceGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(COL_WHITE, Color(ColorTransparency, aTransparenceGradient.EndColor));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aTransparenceGradient.Style);

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aTransparenceGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(1.0, 1.0, 1.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.5));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), basegfx::BColor(1.0, 1.0, 1.0));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aTransparenceGradient.Style);
}

CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf134969TransparencyOnColorGradient)
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index d3ef83c..a656b37 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -1007,11 +1007,20 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest2, testTdf105739)
        CPPUNIT_ASSERT_EQUAL(int(drawing::FillStyle_GRADIENT), static_cast<int>(aFillStyle));

        // Test gradient properties
        com::sun::star::awt::Gradient aFillGradient;
        com::sun::star::awt::Gradient2 aFillGradient;
        aXBackgroundPropSet->getPropertyValue("FillGradient") >>= aFillGradient;

        // MCGR: Use the completely imported gradient to check for correctness
        basegfx::ColorStops aColorStops;
        basegfx::utils::fillColorStopsFromGradient2(aColorStops, aFillGradient);

        CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(1.0, 0.0, 0.0));
        CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
        CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(),
                             basegfx::BColor(0.0, 0.69019607843137254, 0.31372549019607843));
        CPPUNIT_ASSERT_EQUAL(int(awt::GradientStyle_LINEAR), static_cast<int>(aFillGradient.Style));
        CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, Color(ColorTransparency, aFillGradient.StartColor));
        CPPUNIT_ASSERT_EQUAL(Color(0x00b050), Color(ColorTransparency, aFillGradient.EndColor));
    }
}

diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx
index 6fdf10a..7b3bc17 100644
--- a/sd/qa/unit/export-tests-ooxml3.cxx
+++ b/sd/qa/unit/export-tests-ooxml3.cxx
@@ -1243,10 +1243,18 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf127372)
    createSdImpressDoc("odp/tdf127372.odp");
    saveAndReload("Impress Office Open XML");
    uno::Reference<beans::XPropertySet> xShape(getShapeFromPage(0, 0));
    awt::Gradient aTransparenceGradient;
    awt::Gradient2 aTransparenceGradient;
    xShape->getPropertyValue("FillTransparenceGradient") >>= aTransparenceGradient;
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aTransparenceGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aTransparenceGradient.EndColor));

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aTransparenceGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
}

CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf127379)
@@ -1268,10 +1276,20 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf127379)
    aXBackgroundPropSet->getPropertyValue("FillStyle") >>= aFillStyle;
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, aFillStyle);

    awt::Gradient aGradient;
    awt::Gradient2 aGradient;
    CPPUNIT_ASSERT(aXBackgroundPropSet->getPropertyValue("FillGradient") >>= aGradient);
    CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0x2A6099), Color(ColorTransparency, aGradient.EndColor));

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(1.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(
        aColorStops[1].getStopColor(),
        basegfx::BColor(0.16470588235294117, 0.37647058823529411, 0.59999999999999998));
}

CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest3, testTdf98603)
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 8bd818d..6e996d1 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -125,7 +125,12 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testDocumentLayout)
            { u"fdo47434.pptx", u"xml/fdo47434_", u"" },
            { u"n758621.ppt", u"xml/n758621_", u"" },
            { u"fdo64586.ppt", u"xml/fdo64586_", u"" },

            // needed to adapt this, the border parameter is no longer
            // exported with MCGRs due to oox neither needing nor
            // supporting it with now freely definable gradients
            { u"n819614.pptx", u"xml/n819614_", u"" },

            { u"n820786.pptx", u"xml/n820786_", u"" },
            { u"n762695.pptx", u"xml/n762695_", u"" },
            { u"n593612.pptx", u"xml/n593612_", u"" },
@@ -172,9 +177,15 @@ CPPUNIT_TEST_FIXTURE(SdImportTest, testDocumentLayout)
                = OUStringToOString(createFileURL(aFilesToCompare[i].sDump), RTL_TEXTENCODING_UTF8)
                  + OString::number(j) + ".xml";

            if (nUpdateMe == j)
            if (nUpdateMe == i) // index was wrong here
            {
                std::ofstream aStream(aFileName.getStr(),
                // had to adapt this, std::ofstream annot write to an URL but needs a
                // filesystem path. Seems as if no one had to adapt any of the cases
                // for some years :-/
                OUString sTempFilePath;
                osl::FileBase::getSystemPathFromFileURL(OUString::fromUtf8(aFileName),
                                                        sTempFilePath);
                std::ofstream aStream(sTempFilePath.toUtf8().getStr(),
                                      std::ofstream::out | std::ofstream::binary);
                aStream << aString;
                aStream.close();
diff --git a/sd/qa/unit/misc-tests.cxx b/sd/qa/unit/misc-tests.cxx
index 3f2b299..cfa4f6a 100644
--- a/sd/qa/unit/misc-tests.cxx
+++ b/sd/qa/unit/misc-tests.cxx
@@ -280,12 +280,20 @@ void SdMiscTest::testFillGradient()
    uno::Reference<beans::XPropertySet> xPropSet2(xIndexAccess->getByIndex(0),
                                                  uno::UNO_QUERY_THROW);
    drawing::FillStyle eFillStyle;
    awt::Gradient aGradient2;
    awt::Gradient2 aGradient2;
    CPPUNIT_ASSERT(xPropSet2->getPropertyValue("FillStyle") >>= eFillStyle);
    CPPUNIT_ASSERT_EQUAL(int(drawing::FillStyle_GRADIENT), static_cast<int>(eFillStyle));
    CPPUNIT_ASSERT(xPropSet2->getPropertyValue("FillGradient") >>= aGradient2);
    CPPUNIT_ASSERT_EQUAL(sal_Int32(Color(255, 0, 0)), aGradient2.StartColor);
    CPPUNIT_ASSERT_EQUAL(sal_Int32(Color(0, 255, 0)), aGradient2.EndColor);

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient2);

    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(1.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 1.0, 0.0));
}

void SdMiscTest::testTdf44774()
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx
index 9c295a5..09845d3 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -765,8 +765,13 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testPageFillGradient)
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, eXFS);

    XGradient aGradient = rPageAttr.GetItem(XATTR_FILLGRADIENT)->GetGradientValue();
    CPPUNIT_ASSERT_EQUAL(Color(0xff0000), Color(aGradient.GetColorStops().front().getStopColor()));
    CPPUNIT_ASSERT_EQUAL(Color(0x0000ff), Color(aGradient.GetColorStops().back().getStopColor()));
    const basegfx::ColorStops& rColorStops(aGradient.GetColorStops());

    CPPUNIT_ASSERT_EQUAL(size_t(2), rColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(rColorStops[0].getStopColor(), basegfx::BColor(1.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(rColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(rColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 1.0));
}

CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf134053)
diff --git a/sw/CppunitTest_sw_odfexport.mk b/sw/CppunitTest_sw_odfexport.mk
index 62bc134a..a8c17502 100644
--- a/sw/CppunitTest_sw_odfexport.mk
+++ b/sw/CppunitTest_sw_odfexport.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_odfexport, \
    unotest \
    utl \
    vcl \
    basegfx \
))

$(eval $(call gb_CppunitTest_use_externals,sw_odfexport,\
diff --git a/sw/ooxmlexport_setup.mk b/sw/ooxmlexport_setup.mk
index e124ee3..ef1cbb3 100644
--- a/sw/ooxmlexport_setup.mk
+++ b/sw/ooxmlexport_setup.mk
@@ -26,7 +26,8 @@ define sw_ooxmlexport_libraries
	unotest \
	utl \
	vcl \
	svxcore
	svxcore \
	basegfx
endef

# template for ooxmlexport tests (there are several so that they can be run in parallel)
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 9b7834a..cdafc3a 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -12,7 +12,7 @@
#include <swmodeltestbase.hxx>

#include <com/sun/star/awt/FontSlant.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
@@ -51,6 +51,7 @@
#include <comphelper/sequenceashashmap.hxx>
#include <vcl/filter/PDFiumLibrary.hxx>
#include <comphelper/scopeguard.hxx>
#include <basegfx/utils/gradienttools.hxx>

#include <docufld.hxx> // for SwHiddenTextField::ParseIfFieldDefinition() method call
#include <unoprnms.hxx>
@@ -791,16 +792,31 @@ DECLARE_ODFEXPORT_TEST(testTextframeGradient, "textframe-gradient.odt")

    uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(Color(0xC0504D), Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0xD99594), Color(ColorTransparency, aGradient.EndColor));
    awt::Gradient2 aGradient = getProperty<awt::Gradient2>(xFrame, "FillGradient");

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.75294117647058822, 0.31372549019607843, 0.30196078431372547));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.85098039215686272, 0.58431372549019611, 0.58039215686274515));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);

    xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0x666666), Color(ColorTransparency, aGradient.EndColor));
    aGradient = getProperty<awt::Gradient2>(xFrame, "FillGradient");

    // MCGR: Use the completely imported gradient to check for correctness
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(2), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.40000000000000002, 0.40000000000000002, 0.40000000000000002));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
}

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
index b3967ab..8a816ae 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport2.cxx
@@ -14,7 +14,7 @@
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/style/TabStop.hpp>
#include <com/sun/star/view/XViewSettingsSupplier.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
@@ -32,6 +32,7 @@
#include <com/sun/star/text/XTextFieldsSupplier.hpp>

#include <oox/drawingml/drawingmltypes.hxx>
#include <basegfx/utils/gradienttools.hxx>

class Test : public SwModelTestBase
{
@@ -578,17 +579,36 @@ DECLARE_OOXMLEXPORT_TEST(testTextframeGradient, "textframe-gradient.docx")

    uno::Reference<beans::XPropertySet> xFrame(getShape(1), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(Color(0xC0504D), Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0xD99594), Color(ColorTransparency, aGradient.EndColor));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
    awt::Gradient2 aGradient(getProperty<awt::Gradient2>(xFrame, "FillGradient"));

    // MCGR: Use the completely imported transparency gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.85098039215686272, 0.58431372549019611, 0.58039215686274515));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.5));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.75294117647058822, 0.31372549019607843, 0.30196078431372547));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), basegfx::BColor(0.85098039215686272, 0.58431372549019611, 0.58039215686274515));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);

    xFrame.set(getShape(2), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0x666666), Color(ColorTransparency, aGradient.EndColor));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
    aGradient = getProperty<awt::Gradient2>(xFrame, "FillGradient");

    // MCGR: Use the completely imported transparency gradient to check for correctness
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);

    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), basegfx::BColor(0.40000000000000002, 0.40000000000000002, 0.40000000000000002));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.5));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), basegfx::BColor(0.0, 0.0, 0.0));
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), basegfx::BColor(0.40000000000000002, 0.40000000000000002, 0.40000000000000002));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);

    // Left / right margin was incorrect: the attribute was missing and we
    // didn't have the right default (had 0 instead of the below one).
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 0a5ef84..0a5bd68 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -9,7 +9,7 @@

#include <swmodeltestbase.hxx>

#include <com/sun/star/awt/Gradient.hpp>
#include <com/sun/star/awt/Gradient2.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
@@ -30,6 +30,7 @@
#include <com/sun/star/text/XBookmarksSupplier.hpp>

#include <tools/UnitConversion.hxx>
#include <basegfx/utils/gradienttools.hxx>

using namespace css;

@@ -612,18 +613,41 @@ DECLARE_RTFEXPORT_TEST(testTextframeGradient, "textframe-gradient.rtf")
    uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT,
                         getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(Color(0xC0504D), Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0xD99594), Color(ColorTransparency, aGradient.EndColor));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
    awt::Gradient2 aGradient = getProperty<awt::Gradient2>(xFrame, "FillGradient");

    // prepare compare colors
    const basegfx::BColor aColA(0.85098039215686272, 0.58431372549019611, 0.58039215686274515);
    const basegfx::BColor aColB(0.75294117647058822, 0.31372549019607843, 0.30196078431372547);
    const basegfx::BColor aColC(0.40000000000000002, 0.40000000000000002, 0.40000000000000002);
    const basegfx::BColor aColD(0.0, 0.0, 0.0);

    // MCGR: Use the completely imported transparency gradient to check for correctness
    basegfx::ColorStops aColorStops;
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);
    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), aColA);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.5));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), aColB);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), aColA);

    xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
    CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT,
                         getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
    aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
    CPPUNIT_ASSERT_EQUAL(COL_BLACK, Color(ColorTransparency, aGradient.StartColor));
    CPPUNIT_ASSERT_EQUAL(Color(0x666666), Color(ColorTransparency, aGradient.EndColor));
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
    aGradient = getProperty<awt::Gradient2>(xFrame, "FillGradient");

    // MCGR: Use the completely imported transparency gradient to check for correctness
    basegfx::utils::fillColorStopsFromGradient2(aColorStops, aGradient);
    CPPUNIT_ASSERT_EQUAL(size_t(3), aColorStops.size());
    CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_LINEAR, aGradient.Style);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[0].getStopOffset(), 0.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[0].getStopColor(), aColC);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[1].getStopOffset(), 0.5));
    CPPUNIT_ASSERT_EQUAL(aColorStops[1].getStopColor(), aColD);
    CPPUNIT_ASSERT(basegfx::fTools::equal(aColorStops[2].getStopOffset(), 1.0));
    CPPUNIT_ASSERT_EQUAL(aColorStops[2].getStopColor(), aColC);
}

DECLARE_RTFEXPORT_TEST(testRecordChanges, "record-changes.rtf")
diff --git a/sw/rtfexport_setup.mk b/sw/rtfexport_setup.mk
index e4421ca..c24cb81 100644
--- a/sw/rtfexport_setup.mk
+++ b/sw/rtfexport_setup.mk
@@ -36,6 +36,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_rtfexport$(1), \
    utl \
    vcl \
    tl \
    basegfx \
))

$(eval $(call gb_CppunitTest_use_externals,sw_rtfexport$(1),\
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 0d59c8d..e545c6c 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -3707,29 +3707,39 @@ void RtfAttributeOutput::FormatFillGradient(const XFillGradientItem& rFillGradie
    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
        "fillType", OString::number(7))); // Shade using the fillAngle

    const XGradient& rGradient = rFillGradient.GetGradientValue();
    const Color aStartColor(rGradient.GetColorStops().front().getStopColor());
    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
        "fillBackColor", OString::number(wwUtility::RGBToBGR(aStartColor))));
    const XGradient& rGradient(rFillGradient.GetGradientValue());
    const basegfx::ColorStops& rColorStops(rGradient.GetColorStops());

    const Color aEndColor(rGradient.GetColorStops().back().getStopColor());
    // MCGR: It would be best to export the full MCGR definition here
    // with all ColorStops in rColorStops, but rtf does not support this.
    // Best thing to do and to stay compatible is to export front/back
    // colors as start/end and - when more than two ColorStops are defined -
    // guess that GradientStyle_AXIAL is used and thus create a "fillFocus"
    // entry
    // NOTE: I also found that loading file from testTextframeGradient
    // "textframe-gradient.rtf" and save-as *inverts* the gradient, so I
    // exchanged here fillColor/fillBackColor to get the correct order
    const Color aStartColor(rColorStops.front().getStopColor());
    m_aFlyProperties.push_back(std::make_pair<OString, OString>(
        "fillColor", OString::number(wwUtility::RGBToBGR(aEndColor))));
        "fillColor", OString::number(wwUtility::RGBToBGR(aStartColor))));

    switch (rGradient.GetGradientStyle())
    if (rColorStops.size() < 3)
    {
        case css::awt::GradientStyle_LINEAR:
            break;
        case css::awt::GradientStyle_AXIAL:
            m_aFlyProperties.push_back(
                std::make_pair<OString, OString>("fillFocus", OString::number(50)));
            break;
        case css::awt::GradientStyle_RADIAL:
        case css::awt::GradientStyle_ELLIPTICAL:
        case css::awt::GradientStyle_SQUARE:
        case css::awt::GradientStyle_RECT:
        default:
            break;
        // two-color version, use back as 2nd color
        const Color aEndColor(rColorStops.back().getStopColor());
        m_aFlyProperties.push_back(std::make_pair<OString, OString>(
            "fillBackColor", OString::number(wwUtility::RGBToBGR(aEndColor))));
    }
    else
    {
        // assume what was formally GradientStyle_AXIAL, see above and also refer to
        // FillModel::pushToPropMap 'fFocus' value and usage.
        // The 2nd color is the in-between color, use it
        const Color aEndColor(rColorStops[1].getStopColor());
        m_aFlyProperties.push_back(std::make_pair<OString, OString>(
            "fillBackColor", OString::number(wwUtility::RGBToBGR(aEndColor))));
        m_aFlyProperties.push_back(
            std::make_pair<OString, OString>("fillFocus", OString::number(50)));
    }
}