chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx |   18 +--
 cui/source/dialogs/SpellDialog.cxx                           |    2 
 cui/source/tabpages/backgrnd.cxx                             |    8 -
 cui/source/tabpages/chardlg.cxx                              |    2 
 dbaccess/source/ui/control/sqledit.cxx                       |    4 
 editeng/source/editeng/editeng.cxx                           |    4 
 editeng/source/items/textitem.cxx                            |   61 +++--------
 editeng/source/rtf/rtfitem.cxx                               |    5 
 extensions/source/propctrlr/fontdialog.cxx                   |    2 
 filter/source/msfilter/svdfppt.cxx                           |    6 -
 include/editeng/colritem.hxx                                 |   15 +-
 include/editeng/editeng.hxx                                  |    3 
 include/sfx2/ColorSets.hxx                                   |   14 +-
 include/svx/svx3ditems.hxx                                   |   44 +++----
 reportdesign/source/ui/misc/UITools.cxx                      |    2 
 sc/qa/unit/subsequent_export-test.cxx                        |    4 
 sc/source/filter/excel/xistyle.cxx                           |    2 
 sc/source/filter/html/htmlpars.cxx                           |    2 
 sc/source/filter/oox/stylesbuffer.cxx                        |    2 
 sc/source/filter/orcus/interface.cxx                         |    2 
 sc/source/ui/app/inputhdl.cxx                                |    4 
 sc/source/ui/view/editsh.cxx                                 |    2 
 sc/source/ui/view/formatsh.cxx                               |    8 -
 sc/source/ui/view/output2.cxx                                |    2 
 sc/source/ui/view/tabvwshf.cxx                               |    2 
 sd/qa/unit/dialogs-test.cxx                                  |    2 
 sd/source/core/drawdoc4.cxx                                  |   20 +--
 sd/source/core/stlpool.cxx                                   |   16 +-
 sd/source/ui/func/fuchar.cxx                                 |    2 
 sd/source/ui/func/fuoaprms.cxx                               |    4 
 sd/source/ui/func/futempl.cxx                                |    2 
 sd/source/ui/view/drtxtob1.cxx                               |    4 
 sfx2/source/styles/ColorSets.cxx                             |   13 ++
 svx/source/customshapes/EnhancedCustomShape3d.cxx            |   10 -
 svx/source/engine3d/float3d.cxx                              |   38 +++---
 svx/source/svdraw/svdfmtf.cxx                                |    2 
 svx/source/svdraw/svdpdf.cxx                                 |    3 
 svx/source/toolbars/extrusionbar.cxx                         |    2 
 sw/source/core/doc/DocumentStylePoolManager.cxx              |    6 -
 sw/source/core/table/swtable.cxx                             |    2 
 sw/source/filter/html/htmldrawreader.cxx                     |    2 
 sw/source/filter/html/htmlforw.cxx                           |    2 
 sw/source/filter/html/svxcss1.cxx                            |    2 
 sw/source/filter/html/swhtml.cxx                             |    2 
 sw/source/uibase/app/docshini.cxx                            |    2 
 sw/source/uibase/app/swmodul1.cxx                            |    2 
 sw/source/uibase/shells/basesh.cxx                           |    2 
 sw/source/uibase/shells/drwtxtex.cxx                         |    4 
 sw/source/uibase/shells/frmsh.cxx                            |    2 
 sw/source/uibase/shells/tabsh.cxx                            |    2 
 sw/source/uibase/shells/textsh1.cxx                          |    4 
 51 files changed, 184 insertions(+), 188 deletions(-)

New commits:
commit 7adc1fa124a334578657466e32dbbbaad3439350
Author:     Sarper Akdemir <sarper.akde...@collabora.com>
AuthorDate: Mon Nov 1 01:23:31 2021 +0300
Commit:     Sarper Akdemir <sarper.akde...@collabora.com>
CommitDate: Mon Nov 1 03:25:47 2021 +0300

    WIP: refactor SfxObjectShell out of SvxColorItem
    
    Change-Id: Ib6be30a543b3ecac117260e7b0d4a4a5cb3e2411

diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx 
b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
index c4b28162d08c..c9bda82dda39 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
@@ -470,44 +470,44 @@ void ThreeD_SceneIllumination_TabPage::updatePreview()
     LightSourceInfo* pInfo = &m_pLightSourceInfoList[0];
 
     // AmbientColor
-    
aItemSet.Put(makeSvx3DAmbientcolorItem(m_xLB_AmbientLight->GetSelectEntryColor()));
+    
aItemSet.Put(makeSvx3DAmbientcolorItem(m_xLB_AmbientLight->GetSelectEntryColor(),
 aItemSet));
 
-    aItemSet.Put(makeSvx3DLightcolor1Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor1Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff1Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection1Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[1];
-    aItemSet.Put(makeSvx3DLightcolor2Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor2Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff2Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection2Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[2];
-    aItemSet.Put(makeSvx3DLightcolor3Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor3Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff3Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection3Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[3];
-    aItemSet.Put(makeSvx3DLightcolor4Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor4Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff4Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection4Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[4];
-    aItemSet.Put(makeSvx3DLightcolor5Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor5Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff5Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection5Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[5];
-    aItemSet.Put(makeSvx3DLightcolor6Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor6Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff6Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection6Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[6];
-    aItemSet.Put(makeSvx3DLightcolor7Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor7Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff7Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection7Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
     pInfo = &m_pLightSourceInfoList[7];
-    aItemSet.Put(makeSvx3DLightcolor8Item(pInfo->aLightSource.nDiffuseColor));
+    aItemSet.Put(makeSvx3DLightcolor8Item(pInfo->aLightSource.nDiffuseColor, 
aItemSet));
     aItemSet.Put(makeSvx3DLightOnOff8Item(pInfo->aLightSource.bIsEnabled));
     
aItemSet.Put(makeSvx3DLightDirection8Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection)));
 
diff --git a/cui/source/dialogs/SpellDialog.cxx 
b/cui/source/dialogs/SpellDialog.cxx
index b583fa03768e..5955a0c6b727 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -1665,7 +1665,7 @@ void SentenceEditWindow_Impl::MoveErrorMarkTo(sal_Int32 
nStart, sal_Int32 nEnd,
     m_xEditEngine->RemoveAttribs(aAll, false, EE_CHAR_WEIGHT_CTL);
 
     SfxItemSet aSet(m_xEditEngine->GetEmptyItemSet());
-    aSet.Put(SvxColorItem(bGrammarError ? COL_LIGHTBLUE : COL_LIGHTRED, 
EE_CHAR_COLOR));
+    aSet.Put(SvxColorItem(bGrammarError ? COL_LIGHTBLUE : COL_LIGHTRED, 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR));
     aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT));
     aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT_CJK));
     aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT_CTL));
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index 3aac1fae51a7..0c42e86b2b25 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -153,8 +153,8 @@ bool SvxBkgTabPage::FillItemSet( SfxItemSet* rCoreSet )
             {
                 if ( SID_ATTR_CHAR_BACK_COLOR == nSlot )
                 {
-                    maSet.Put( SvxColorItem( COL_TRANSPARENT, nWhich ) );
-                    rCoreSet->Put( SvxColorItem( COL_TRANSPARENT, nWhich ) );
+                    maSet.Put( SvxColorItem( COL_TRANSPARENT, 
ColorSets::getColorSetsFromItemSet(maSet), nWhich ) );
+                    rCoreSet->Put( SvxColorItem( COL_TRANSPARENT, 
ColorSets::getColorSetsFromItemSet(maSet), nWhich ) );
                 }
                 else
                 {
@@ -169,8 +169,8 @@ bool SvxBkgTabPage::FillItemSet( SfxItemSet* rCoreSet )
             XFillColorItem aColorItem( maSet.Get( XATTR_FILLCOLOR ) );
             if ( SID_ATTR_CHAR_BACK_COLOR == nSlot )
             {
-                maSet.Put( SvxColorItem( aColorItem.GetColorValue(), nWhich ) 
);
-                rCoreSet->Put( SvxColorItem( aColorItem.GetColorValue(), 
nWhich ) );
+                maSet.Put( SvxColorItem( aColorItem.GetColorValue(), 
ColorSets::getColorSetsFromItemSet(maSet), nWhich ) );
+                rCoreSet->Put( SvxColorItem( aColorItem.GetColorValue(), 
ColorSets::getColorSetsFromItemSet(maSet), nWhich ) );
             }
             else
             {
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index a4cc33265a18..5a1c6dd79596 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1595,7 +1595,7 @@ bool SvxCharEffectsPage::FillItemSetColor_Impl( 
SfxItemSet& rSet )
     }
 
     if (bChanged)
-        rSet.Put( SvxColorItem( aSelectedColor, nWhich ) );
+        rSet.Put( SvxColorItem( aSelectedColor, 
ColorSets::getColorSetsFromItemSet(rSet), nWhich ) );
     else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
         rSet.InvalidateItem(nWhich);
 
diff --git a/dbaccess/source/ui/control/sqledit.cxx 
b/dbaccess/source/ui/control/sqledit.cxx
index c53f684dab4a..482dad8812ef 100644
--- a/dbaccess/source/ui/control/sqledit.cxx
+++ b/dbaccess/source/ui/control/sqledit.cxx
@@ -210,7 +210,7 @@ void SQLEditView::UpdateData()
         for (auto const& portion : aPortions)
         {
             SfxItemSet aSet(rEditEngine.GetEmptyItemSet());
-            aSet.Put(SvxColorItem(GetColorValue(portion.tokenType), 
EE_CHAR_COLOR));
+            aSet.Put(SvxColorItem(GetColorValue(portion.tokenType), 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR));
             rEditEngine.QuickSetAttribs(aSet, ESelection(nLine, 
portion.nBegin, nLine, portion.nEnd));
         }
     }
@@ -280,7 +280,7 @@ void SQLEditView::DoBracketHilight(sal_uInt16 nKey)
                 if (!nCount)
                 {
                     SfxItemSet aSet(m_xEditEngine->GetEmptyItemSet());
-                    aSet.Put(SvxColorItem(Color(0,0,0), EE_CHAR_COLOR));
+                    aSet.Put(SvxColorItem(Color(0,0,0), 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR));
                     aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, EE_CHAR_WEIGHT));
                     aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, 
EE_CHAR_WEIGHT_CJK));
                     aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, 
EE_CHAR_WEIGHT_CTL));
diff --git a/editeng/source/editeng/editeng.cxx 
b/editeng/source/editeng/editeng.cxx
index b90ad3127fee..bdf4dcae130b 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2635,8 +2635,8 @@ void EditEngine::SetFontInfoInItemSet( SfxItemSet& rSet, 
const SvxFont& rFont )
     rSet.Put( SvxShadowedItem( rFont.IsShadow(), EE_CHAR_SHADOW )  );
     rSet.Put( SvxEscapementItem( rFont.GetEscapement(), rFont.GetPropr(), 
EE_CHAR_ESCAPEMENT )  );
     rSet.Put( SvxWeightItem( rFont.GetWeight(), EE_CHAR_WEIGHT )  );
-    rSet.Put( SvxColorItem( rFont.GetColor(), EE_CHAR_COLOR )  );
-    rSet.Put( SvxColorItem( rFont.GetFillColor(), EE_CHAR_BKGCOLOR )  );
+    rSet.Put( SvxColorItem( rFont.GetColor(), 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR )  );
+    rSet.Put( SvxColorItem( rFont.GetFillColor(), 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_BKGCOLOR )  );
     rSet.Put( SvxUnderlineItem( rFont.GetUnderline(), EE_CHAR_UNDERLINE )  );
     rSet.Put( SvxOverlineItem( rFont.GetOverline(), EE_CHAR_OVERLINE )  );
     rSet.Put( SvxCrossedOutItem( rFont.GetStrikeout(), EE_CHAR_STRIKEOUT )  );
diff --git a/editeng/source/items/textitem.cxx 
b/editeng/source/items/textitem.cxx
index 088e2b7d0dbd..9848f8bcb886 100644
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@ -1321,30 +1321,14 @@ bool ThemeColorData::operator==(const ThemeColorData 
&rOther) const
         return true;
     else
         return mnThemeColorIndex == rOther.mnThemeColorIndex
-               && mnVirtualThemeColorSetIndex == 
rOther.mnVirtualThemeColorSetIndex
+               // TODO: && mpVirtualThemeColorSet == 
rOther.mpVirtualThemeColorSet
                && mnTintShade == rOther.mnTintShade;
 }
 
 std::optional<Color> ThemeColorData::getThemeColorIfNeedsUpdate() const
 {
-    // HACK: after getting rid of SfxObjectShell::Current() should be
-    // able to get rid of mnContainerIndex
-    if (mnThemeColorIndex != -1 && mnVirtualThemeColorSetIndex != -1)
+    if (mnThemeColorIndex != -1)
     {
-        // HACK: try to get the pointer to the container.. if it's not there
-        // We won't need this after figuring out a better way of interacting 
with SfxObjectShell
-        if(mpVirtualThemeColorSet.expired())
-        {
-            if (SfxObjectShell* pObjShell = SfxObjectShell::Current())
-            {
-                if (const SfxColorSetListItem* pColorSetItem = 
pObjShell->GetItem(SID_COLOR_SETS))
-                {
-                    ColorSets& rColorSets = 
pColorSetItem->GetSfxColorSetList();
-                    mpVirtualThemeColorSet = 
rColorSets.getVirtualColorSet(mnVirtualThemeColorSetIndex);
-                }
-            }
-        }
-
         if (auto pVirtualThemeColorSet = mpVirtualThemeColorSet.lock())
         {
             if ( auto pColorSet = 
pVirtualThemeColorSet->getColorSetPtr().lock() )
@@ -1407,36 +1391,18 @@ void ThemeColorData::RecalculateOnNextGet()
 
 void ThemeColorData::setVirtualThemeColorSet(sal_Int32 
nVirtualThemeColorSetIndex)
 {
-    // HACK:
-    mnVirtualThemeColorSetIndex = nVirtualThemeColorSetIndex;
-    return;
-
-    // After swapping out SfxObjectShell::Current() with something reasonable
-    // this should work:
-    if (SfxObjectShell* pObjShell = SfxObjectShell::Current())
+    if (mpColorSets)
     {
-        if (const SfxColorSetListItem* pColorSetItem = 
pObjShell->GetItem(SID_COLOR_SETS))
-        {
-            ColorSets& rColorSets = pColorSetItem->GetSfxColorSetList();
-            mpVirtualThemeColorSet = 
rColorSets.getVirtualColorSet(nVirtualThemeColorSetIndex);
-        }
+        mpVirtualThemeColorSet = 
mpColorSets->getVirtualColorSet(nVirtualThemeColorSetIndex);
     }
 }
 
 sal_Int32 ThemeColorData::getVirtualThemeColorSetIndex() const
 {
-    // HACK:
-    return mnVirtualThemeColorSetIndex;
-
-    // After swapping out SfxObjectShell::Current() with something reasonable
-    // this should work:
-    if (SfxObjectShell* pObjShell = SfxObjectShell::Current())
-    {
-        if (const SfxColorSetListItem* pColorSetItem = 
pObjShell->GetItem(SID_COLOR_SETS))
-        {
-            return 
pColorSetItem->GetSfxColorSetList().getVirtualColorSetIndex(mpVirtualThemeColorSet);
-        }
-    }
+    if (mpColorSets)
+        return mpColorSets->getVirtualColorSetIndex(mpVirtualThemeColorSet);
+    else
+        return -1;
 }
 
 // class SvxColorItem ----------------------------------------------------
@@ -1447,10 +1413,17 @@ SvxColorItem::SvxColorItem( const sal_uInt16 nId ) :
 {
 }
 
-SvxColorItem::SvxColorItem( const Color& rCol, const sal_uInt16 nId ) :
+SvxColorItem::SvxColorItem(const Color& rCol, const sal_uInt16 nId)
+    : SfxPoolItem(nId)
+    , mColor(rCol)
+    , maThemeColorData()
+{
+}
+
+SvxColorItem::SvxColorItem( const Color& rCol, const ColorSets* pColorSets, 
const sal_uInt16 nId ) :
     SfxPoolItem( nId ),
     mColor( rCol ),
-    maThemeColorData()
+    maThemeColorData( pColorSets )
 {
 }
 
diff --git a/editeng/source/rtf/rtfitem.cxx b/editeng/source/rtf/rtfitem.cxx
index b6e0a93adee6..719176de28c0 100644
--- a/editeng/source/rtf/rtfitem.cxx
+++ b/editeng/source/rtf/rtfitem.cxx
@@ -924,8 +924,9 @@ ATTR_SETOVERLINE:
             case RTF_CF:
                 if( aPlainMap.nColor )
                 {
-                    pSet->Put( SvxColorItem( GetColor( sal_uInt16(nTokenValue) 
),
-                                aPlainMap.nColor ));
+                    pSet->Put(SvxColorItem(GetColor(sal_uInt16(nTokenValue)),
+                                           
ColorSets::getColorSetsFromItemSet(*pSet),
+                                           aPlainMap.nColor));
                 }
                 break;
             //#i12501# While cb is clearly documented in the rtf spec, word
diff --git a/extensions/source/propctrlr/fontdialog.cxx 
b/extensions/source/propctrlr/fontdialog.cxx
index 0e4b11be2896..b50c28e93d32 100644
--- a/extensions/source/propctrlr/fontdialog.cxx
+++ b/extensions/source/propctrlr/fontdialog.cxx
@@ -235,7 +235,7 @@ namespace pcr
             SvxUnderlineItem    aUnderlineItem(eUnderline,CFID_UNDERLINE);
             aUnderlineItem.SetColor(Color(ColorTransparency, nTextLineColor));
 
-            SvxColorItem aSvxColorItem(Color(ColorTransparency, 
nColor32),CFID_CHARCOLOR);
+            SvxColorItem aSvxColorItem(Color(ColorTransparency, nColor32), 
ColorSets::getColorSetsFromItemSet(*_pSet), CFID_CHARCOLOR);
             SvxLanguageItem 
aLanguageItem(Application::GetSettings().GetUILanguageTag().getLanguageType(), 
CFID_LANGUAGE);
 
             // the 2 CJK props
diff --git a/filter/source/msfilter/svdfppt.cxx 
b/filter/source/msfilter/svdfppt.cxx
index f7ef3675a03d..ff39d8a9ffff 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -5756,14 +5756,14 @@ void PPTPortionObj::ApplyTo(  SfxItemSet& rSet, 
SdrPowerPointImport& rManager, T
             break;
             default: break;
         }
-        rSet.Put( SvxColorItem( aDefColor, EE_CHAR_COLOR ) );
+        rSet.Put( SvxColorItem( aDefColor, 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR ) );
     }
     else
     {
         if ( GetAttrib( PPT_CharAttr_FontColor, nVal, nDestinationInstance ) ) 
 // text color (4Byte-Arg)
         {
             Color aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) );
-            rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) );
+            rSet.Put(SvxColorItem(aCol, 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR));
             if ( nDestinationInstance == TSS_Type::Unknown )
                 mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth 
].mnFontColorInStyleSheet = aCol;
         }
@@ -5772,7 +5772,7 @@ void PPTPortionObj::ApplyTo(  SfxItemSet& rSet, 
SdrPowerPointImport& rManager, T
             Color   aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) );
             Color&  aColorInSheet = mrStyleSheet.mpCharSheet[ mnInstance 
]->maCharLevel[ mnDepth ].mnFontColorInStyleSheet;
             if ( aColorInSheet != aCol )
-                rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) );
+                rSet.Put( SvxColorItem( aCol, 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR ) );
         }
     }
 
diff --git a/include/editeng/colritem.hxx b/include/editeng/colritem.hxx
index fe300045598f..75d5ef480c42 100644
--- a/include/editeng/colritem.hxx
+++ b/include/editeng/colritem.hxx
@@ -27,7 +27,8 @@
 
 #include <sal/log.hxx>
 
-#define VERSION_USEAUTOCOLOR    1
+#define VERSION_USEAUTOCOLOR 1
+
 
 /** ThemeColorData holds theme color related
     data of a color item eg. SvxColorItem
@@ -35,6 +36,8 @@
 class ThemeColorData
 {
 public:
+    ThemeColorData() = default;
+    ThemeColorData(const ColorSets* pColorSets) : mpColorSets(pColorSets){}
     bool operator==(const ThemeColorData& rOther) const;
     /** Calculates and returns the theme color from current ThemeColorData
 
@@ -77,14 +80,7 @@ private:
     // mutable since marked as false after recalculation in 
getThemeColorIfNeedsUpdate
     mutable bool mbRecalculateColor = true;
 
-    // HACK: VirtualColorSet index
-    // should be able to remove this after removing SfxObjectShell::Current()
-    // from the themecolordata code
-    sal_Int32 mnVirtualThemeColorSetIndex = -1;
-
-
-    // HACK: mutable here until I fix the SfxObjectShell interactions..
-    mutable std::weak_ptr<VirtualThemeColorSet> mpVirtualThemeColorSet = 
std::weak_ptr<VirtualThemeColorSet>();
+    std::weak_ptr<VirtualThemeColorSet> mpVirtualThemeColorSet = 
std::weak_ptr<VirtualThemeColorSet>();
 };
 
 /** SvxColorItem item describes a color.
@@ -105,6 +101,7 @@ public:
 
     explicit SvxColorItem(const sal_uInt16 nId);
     SvxColorItem(const Color& aColor, const sal_uInt16 nId);
+    SvxColorItem(const Color& aColor, const ColorSets* pColorSets, const 
sal_uInt16 nId);
     virtual ~SvxColorItem() override;
 
     // "pure virtual Methods" from SfxPoolItem
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 53543cf178d2..88ce7700d654 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -29,6 +29,7 @@
 #include <com/sun/star/i18n/WordType.hpp>
 #include <com/sun/star/i18n/CharacterIteratorMode.hpp>
 
+#include <sfx2/ColorSets.hxx>
 #include <svl/typedwhich.hxx>
 #include <editeng/editdata.hxx>
 #include <editeng/editstat.hxx>
@@ -417,6 +418,8 @@ public:
     void            SetEditTextObjectPool( SfxItemPool* pPool );
     SfxItemPool*    GetEditTextObjectPool() const;
 
+    ColorSets*      GetColorSetsPtr() const;
+
     void                SetStyleSheetPool( SfxStyleSheetPool* pSPool );
     SfxStyleSheetPool*  GetStyleSheetPool();
 
diff --git a/include/sfx2/ColorSets.hxx b/include/sfx2/ColorSets.hxx
index 1f0cb6312c75..6b6735479c67 100644
--- a/include/sfx2/ColorSets.hxx
+++ b/include/sfx2/ColorSets.hxx
@@ -16,9 +16,13 @@
 #include <rtl/ustring.hxx>
 #include <sal/types.h>
 #include <sfx2/dllapi.h>
+#include <sfx2/sfxsids.hrc>
 #include <svl/poolitem.hxx>
+#include <svl/itemset.hxx>
 #include <tools/color.hxx>
 
+class SfxColorSetListItem;
+
 class ColorSet
 {
     OUString maColorSetName;
@@ -83,16 +87,18 @@ public:
         return maColorSets.size() - 1;
     }
 
-    std::shared_ptr<VirtualThemeColorSet>& getVirtualColorSet(int 
nVirtualColorSetIndex)
+    const std::shared_ptr<VirtualThemeColorSet>& getVirtualColorSet(int 
nVirtualColorSetIndex) const
     {
+        // HACK: dont forget to change this... :)
         return maVirtualThemeColorSets[nVirtualColorSetIndex];
     }
 
-    sal_Int32 getVirtualColorSetIndex(const 
std::weak_ptr<VirtualThemeColorSet>& pVirtualColorSet)
+    sal_Int32
+    getVirtualColorSetIndex(const std::weak_ptr<VirtualThemeColorSet>& 
pVirtualColorSet) const
     {
         if (auto aIt = std::find_if(
                 maVirtualThemeColorSets.begin(), maVirtualThemeColorSets.end(),
-                [pVirtualColorSet](std::shared_ptr<VirtualThemeColorSet>& 
pVirtualColorSet_) {
+                [pVirtualColorSet](const 
std::shared_ptr<VirtualThemeColorSet>& pVirtualColorSet_) {
                     return pVirtualColorSet_.get() == 
pVirtualColorSet.lock().get();
                 });
             aIt != maVirtualThemeColorSets.end())
@@ -108,6 +114,8 @@ public:
             
std::make_shared<VirtualThemeColorSet>(getColorSetPtr(nIndexColorSetToReference)));
         return maVirtualThemeColorSets.size() - 1;
     }
+
+    static ColorSets* getColorSetsFromItemSet(const SfxItemSet& rSet);
 };
 
 class SFX2_DLLPUBLIC SfxColorSetListItem final : public SfxPoolItem
diff --git a/include/svx/svx3ditems.hxx b/include/svx/svx3ditems.hxx
index 7cb5eae6e399..190eb3a83245 100644
--- a/include/svx/svx3ditems.hxx
+++ b/include/svx/svx3ditems.hxx
@@ -105,12 +105,12 @@ inline SfxBoolItem makeSvx3DShadow3DItem(bool bVal) {
     return SfxBoolItem(SDRATTR_3DOBJ_SHADOW_3D, bVal);
 }
 
-inline SvxColorItem makeSvx3DMaterialEmissionItem(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_EMISSION);
+inline SvxColorItem makeSvx3DMaterialEmissionItem(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DOBJ_MAT_EMISSION);
 }
 
-inline SvxColorItem makeSvx3DMaterialSpecularItem(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_SPECULAR);
+inline SvxColorItem makeSvx3DMaterialSpecularItem(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DOBJ_MAT_SPECULAR);
 }
 
 inline SfxUInt16Item makeSvx3DMaterialSpecularIntensityItem(sal_uInt16 nVal) {
@@ -164,40 +164,40 @@ inline SfxBoolItem makeSvx3DTwoSidedLightingItem(bool 
bVal) {
     return SfxBoolItem(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, bVal);
 }
 
-inline SvxColorItem makeSvx3DLightcolor1Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_1);
+inline SvxColorItem makeSvx3DLightcolor1Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_1);
 }
 
-inline SvxColorItem makeSvx3DLightcolor2Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_2);
+inline SvxColorItem makeSvx3DLightcolor2Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_2);
 }
 
-inline SvxColorItem makeSvx3DLightcolor3Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_3);
+inline SvxColorItem makeSvx3DLightcolor3Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_3);
 }
 
-inline SvxColorItem makeSvx3DLightcolor4Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_4);
+inline SvxColorItem makeSvx3DLightcolor4Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_4);
 }
 
-inline SvxColorItem makeSvx3DLightcolor5Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_5);
+inline SvxColorItem makeSvx3DLightcolor5Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_5);
 }
 
-inline SvxColorItem makeSvx3DLightcolor6Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_6);
+inline SvxColorItem makeSvx3DLightcolor6Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_6);
 }
 
-inline SvxColorItem makeSvx3DLightcolor7Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_7);
+inline SvxColorItem makeSvx3DLightcolor7Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_7);
 }
 
-inline SvxColorItem makeSvx3DLightcolor8Item(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_8);
+inline SvxColorItem makeSvx3DLightcolor8Item(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_LIGHTCOLOR_8);
 }
 
-inline SvxColorItem makeSvx3DAmbientcolorItem(const Color& rCol) {
-    return SvxColorItem(rCol, SDRATTR_3DSCENE_AMBIENTCOLOR);
+inline SvxColorItem makeSvx3DAmbientcolorItem(const Color& rCol, const 
SfxItemSet& rSet) {
+    return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), 
SDRATTR_3DSCENE_AMBIENTCOLOR);
 }
 
 inline SfxBoolItem makeSvx3DLightOnOff1Item(bool bVal) {
diff --git a/reportdesign/source/ui/misc/UITools.cxx 
b/reportdesign/source/ui/misc/UITools.cxx
index 6be0594813f6..4ab27ae03928 100644
--- a/reportdesign/source/ui/misc/UITools.cxx
+++ b/reportdesign/source/ui/misc/UITools.cxx
@@ -348,7 +348,7 @@ namespace
         
_rItemSet.Put(SvxKerningItem(_rxReportControlFormat->getCharKerning(),ITEMID_KERNING));
         
_rItemSet.Put(SvxEmphasisMarkItem(static_cast<FontEmphasisMark>(_rxReportControlFormat->getCharEmphasis()),ITEMID_EMPHASISMARK));
         
_rItemSet.Put(SvxCharReliefItem(static_cast<FontRelief>(_rxReportControlFormat->getCharRelief()),ITEMID_CHARRELIEF));
-        _rItemSet.Put(SvxColorItem(::Color(ColorTransparency, 
_rxReportControlFormat->getCharColor()),ITEMID_COLOR));
+        _rItemSet.Put(SvxColorItem(::Color(ColorTransparency, 
_rxReportControlFormat->getCharColor()), 
ColorSets::getColorSetsFromItemSet(_rItemSet), ITEMID_COLOR));
         
_rItemSet.Put(SvxCharRotateItem(Degree10(_rxReportControlFormat->getCharRotation()),false,ITEMID_CHARROTATE));
         
_rItemSet.Put(SvxCharScaleWidthItem(_rxReportControlFormat->getCharScaleWidth(),ITEMID_CHARSCALE_W));
 
diff --git a/sc/qa/unit/subsequent_export-test.cxx 
b/sc/qa/unit/subsequent_export-test.cxx
index 31c0aae3dd71..d378eac54d4a 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -1532,7 +1532,7 @@ void setAttribute( ScFieldEditEngine& rEE, sal_Int32 
nPara, sal_Int32 nStart, sa
         break;
         case EE_CHAR_COLOR:
         {
-            SvxColorItem aItem(nColor, nType);
+            SvxColorItem aItem(nColor, 
ColorSets::getColorSetsFromItemSet(aItemSet), nType);
             aItemSet.Put(aItem);
             rEE.QuickSetAttribs(aItemSet, aSel);
         }
@@ -2039,7 +2039,7 @@ void ScExportTest::testRichTextExportODS()
         CPPUNIT_ASSERT_MESSAGE("Incorrect B9 value.", 
aCheckFunc.checkB9(pEditText));
 
         ScPatternAttr aCellFontColor(rDoc3.GetPool());
-        aCellFontColor.GetItemSet().Put(SvxColorItem(COL_BLUE, 
ATTR_FONT_COLOR));
+        aCellFontColor.GetItemSet().Put(SvxColorItem(COL_BLUE, 
ColorSets::getColorSetsFromItemSet(aCellFontColor.GetItemSet()), 
ATTR_FONT_COLOR));
         // Set font color of B10 to blue.
         rDoc3.ApplyPattern(1, 9, 0, aCellFontColor);
         pEE->Clear();
diff --git a/sc/source/filter/excel/xistyle.cxx 
b/sc/source/filter/excel/xistyle.cxx
index 995219fc710a..a8a5cd56a78f 100644
--- a/sc/source/filter/excel/xistyle.cxx
+++ b/sc/source/filter/excel/xistyle.cxx
@@ -366,7 +366,7 @@ void XclImpFont::FillToItemSet( SfxItemSet& rItemSet, 
XclFontItemType eType, boo
 
 // Font color - pass AUTO_COL to item
     if( mbColorUsed )
-        PUTITEM( SvxColorItem( maData.maColor, ATTR_FONT_COLOR  ), 
ATTR_FONT_COLOR, EE_CHAR_COLOR );
+        PUTITEM( SvxColorItem( maData.maColor, 
ColorSets::getColorSetsFromItemSet(rItemSet), ATTR_FONT_COLOR  ), 
ATTR_FONT_COLOR, EE_CHAR_COLOR );
 
 // Font weight (for all script types)
     if( mbWeightUsed )
diff --git a/sc/source/filter/html/htmlpars.cxx 
b/sc/source/filter/html/htmlpars.cxx
index e320269352ed..ba9761336bc7 100644
--- a/sc/source/filter/html/htmlpars.cxx
+++ b/sc/source/filter/html/htmlpars.cxx
@@ -1438,7 +1438,7 @@ void ScHTMLLayoutParser::FontOn( HtmlImportInfo* pInfo )
             {
                 Color aColor;
                 rOption.GetColor( aColor );
-                mxActEntry->aItemSet.Put( SvxColorItem( aColor, 
ATTR_FONT_COLOR ) );
+                mxActEntry->aItemSet.Put( SvxColorItem( aColor, 
ColorSets::getColorSetsFromItemSet(mxActEntry->aItemSet), ATTR_FONT_COLOR ) );
             }
             break;
             default: break;
diff --git a/sc/source/filter/oox/stylesbuffer.cxx 
b/sc/source/filter/oox/stylesbuffer.cxx
index b0c574f09378..7e6dce759fc6 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -929,7 +929,7 @@ void Font::fillToItemSet( SfxItemSet& rItemSet, bool 
bEditEngineText, bool bSkip
     // character color
     if( maUsedFlags.mbColorUsed )
     {
-        ScfTools::PutItem( rItemSet,SvxColorItem( maApiData.mnColor, 
bEditEngineText ? static_cast<sal_uInt16>(EE_CHAR_COLOR) : ATTR_FONT_COLOR), 
bSkipPoolDefs );
+        ScfTools::PutItem( rItemSet,SvxColorItem( maApiData.mnColor, 
ColorSets::getColorSetsFromItemSet(rItemSet), bEditEngineText ? 
static_cast<sal_uInt16>(EE_CHAR_COLOR) : ATTR_FONT_COLOR), bSkipPoolDefs );
     }
     // underline style
     if( maUsedFlags.mbUnderlineUsed )
diff --git a/sc/source/filter/orcus/interface.cxx 
b/sc/source/filter/orcus/interface.cxx
index b996449c8218..715a4b2899d1 100644
--- a/sc/source/filter/orcus/interface.cxx
+++ b/sc/source/filter/orcus/interface.cxx
@@ -1365,7 +1365,7 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& 
rSet) const
         FontWeight eWeight = mbBold ? WEIGHT_BOLD : WEIGHT_NORMAL;
         rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT));
 
-        rSet.Put( SvxColorItem(maColor, ATTR_FONT_COLOR));
+        rSet.Put( SvxColorItem(maColor, 
ColorSets::getColorSetsFromItemSet(rSet), ATTR_FONT_COLOR));
 
         if(!maName.isEmpty())
             rSet.Put( SvxFontItem( FAMILY_DONTKNOW, maName, maName, 
PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ));
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index a8bf4a39e8f9..4e1affc638ac 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -410,7 +410,7 @@ handle_r1c1:
 
                 ESelection aSel( 0, nStart, 0, nPos );
                 SfxItemSet aSet( mpEditEngine->GetEmptyItemSet() );
-                aSet.Put( SvxColorItem( nColor, EE_CHAR_COLOR ) );
+                aSet.Put( SvxColorItem( nColor, 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) );
                 mpEditEngine->QuickSetAttribs( aSet, aSel );
                 ++nCount;
             }
@@ -610,7 +610,7 @@ void ScInputHandler::UpdateRange( sal_uInt16 nIndex, const 
ScRange& rNew )
 
         lcl_Replace( pTopView, aNewStr, aOldSel );
         lcl_Replace( pTableView, aNewStr, aOldSel );
-        aSet.Put( SvxColorItem( nNewColor, EE_CHAR_COLOR ) );
+        aSet.Put( SvxColorItem( nNewColor, 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) );
         mpEditEngine->QuickSetAttribs( aSet, aOldSel );
 
         bInRangeUpdate = true;
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index f51e8f49290f..027ce966711a 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -978,7 +978,7 @@ void ScEditShell::ExecuteAttr(SfxRequest& rReq)
                         else
                             aColor = Color( ColorTransparency, sColor.toInt32( 
16 ) );
 
-                        aSet.Put( SvxColorItem( aColor, EE_CHAR_COLOR ) );
+                        aSet.Put( SvxColorItem( aColor, 
ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) );
                     }
                     else
                     {
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index a418f3185c8a..495b3088bc51 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -2066,7 +2066,7 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet )
         {
             case SID_BACKGROUND_COLOR:
             {
-                rSet.Put( SvxColorItem( rBrushItem.GetColor(), 
SID_BACKGROUND_COLOR ) );
+                rSet.Put( SvxColorItem( rBrushItem.GetColor(), 
ColorSets::getColorSetsFromItemSet(rSet), SID_BACKGROUND_COLOR ) );
                 if(SfxItemState::DONTCARE == 
rAttrSet.GetItemState(ATTR_BACKGROUND))
                 {
                     rSet.InvalidateItem(SID_BACKGROUND_COLOR);
@@ -2206,16 +2206,16 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet )
                     if(bColDisable) // if different lines have different colors
                     {
                         aCol = COL_TRANSPARENT;
-                        rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) );
+                        rSet.Put( SvxColorItem(aCol, 
ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) );
                         rSet.InvalidateItem(SID_FRAME_LINECOLOR);
                     }
                     else if (!bCol) // if no line available
                     {
                         aCol = COL_AUTO;
-                        rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) );
+                        rSet.Put( SvxColorItem(aCol, 
ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) );
                     }
                     else
-                        rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) );
+                        rSet.Put( SvxColorItem(aCol, 
ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) );
                 }
                 else // if( nWhich == SID_FRAME_LINESTYLE)
                 {
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 2d45fa62eaa7..e040d1a3278b 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -916,7 +916,7 @@ static void lcl_SetEditColor( EditEngine& rEngine, const 
Color& rColor )
 {
     ESelection aSel( 0, 0, rEngine.GetParagraphCount(), 0 );
     SfxItemSet aSet( rEngine.GetEmptyItemSet() );
-    aSet.Put( SvxColorItem( rColor, EE_CHAR_COLOR ) );
+    aSet.Put( SvxColorItem( rColor, ColorSets::getColorSetsFromItemSet(aSet), 
EE_CHAR_COLOR ) );
     rEngine.QuickSetAttribs( aSet, aSel );
     // function is called with update mode set to FALSE
 }
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index 57b0bf6696d1..7e3ecc332edb 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -992,7 +992,7 @@ void ScTabViewShell::GetStateTable( SfxItemSet& rSet )
             case FID_TAB_SET_TAB_BG_COLOR:
                 {
                     Color aColor = rDoc.GetTabBgColor( nTab );
-                    rSet.Put( SvxColorItem( aColor, nWhich ) );
+                    rSet.Put( SvxColorItem( aColor, 
ColorSets::getColorSetsFromItemSet(rSet), nWhich ) );
                 }
                 break;
 
diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx
index f796823fc426..0bdbd4b44968 100644
--- a/sd/qa/unit/dialogs-test.cxx
+++ b/sd/qa/unit/dialogs-test.cxx
@@ -502,7 +502,7 @@ VclPtr<VclAbstractDialog> 
SdDialogsTest::createDialogByID(sal_uInt32 nID)
             aSet.Put(SfxUInt16Item(ATTR_ANIMATION_TEXTEFFECT, 
sal_uInt16(presentation::AnimationEffect_NONE)));
             aSet.InvalidateItem(ATTR_ANIMATION_SPEED);
             aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, false));
-            aSet.Put(SvxColorItem(COL_LIGHTGRAY, ATTR_ANIMATION_COLOR));
+            aSet.Put(SvxColorItem(COL_LIGHTGRAY, 
ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR));
             aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, false));
             aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, false));
             aSet.InvalidateItem(ATTR_ANIMATION_SOUNDFILE);
diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx
index e078afc58b54..f18ad8ae065b 100644
--- a/sd/source/core/drawdoc4.cxx
+++ b/sd/source/core/drawdoc4.cxx
@@ -215,7 +215,7 @@ void SdDrawDocument::CreateLayoutTemplates()
     rISet.Put(SvxCaseMapItem(SvxCaseMap::NotMapped, EE_CHAR_CASEMAP ));
     rISet.Put(SvxEmphasisMarkItem(FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK));
     rISet.Put(SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF));
-    rISet.Put(SvxColorItem(COL_AUTO, EE_CHAR_COLOR ));
+    rISet.Put(SvxColorItem(COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));
 
     // Paragraph attributes (Edit Engine)
     rISet.Put(SvxLRSpaceItem(EE_PARA_LRSPACE));
@@ -443,7 +443,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         aFillGradient.SetName( aName );
         aFillGradient.SetGradientValue(aGradient);
         pISet->Put( aFillGradient );
-        pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR ));           // 
font white
+        pISet->Put( SvxColorItem(COL_WHITE,  
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));           // font 
white
     }
     // Graphic > Shapes > Filled > Green
     {
@@ -459,7 +459,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         aFillGradient.SetGradientValue(aGradient);
         pISet->Put( aFillGradient );
         pISet->Put( aSvxFontItem );                                     // 
font name
-        pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR ));           // 
font white
+        pISet->Put( SvxColorItem(COL_WHITE, 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));           // font 
white
     }
     // Graphic > Shapes > Filled > Red
     {
@@ -474,7 +474,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         aFillGradient.SetName( aName );
         aFillGradient.SetGradientValue(aGradient);
         pISet->Put( aFillGradient );
-        pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR ));           // 
font white
+        pISet->Put( SvxColorItem(COL_WHITE, 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));           // font 
white
     }
     // Graphic > Shapes > Filled > Yellow
     {
@@ -489,7 +489,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         aFillGradient.SetName( aName );
         aFillGradient.SetGradientValue(aGradient);
         pISet->Put( aFillGradient );
-        pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR ));           // 
font white
+        pISet->Put( SvxColorItem(COL_WHITE, 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));           // font 
white
     }
     // Graphic > Shapes > Outlines
     OUString aOutlineName(SdResId(STR_POOLSHEET_OUTLINE));
@@ -512,7 +512,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_BLUE );
         pISet = &pSheet->GetItemSet();
         pISet->Put( XLineColorItem(OUString(), Color(0x00355269)) );       // 
dark blue 2
-        pISet->Put( SvxColorItem(Color(0x00355269), EE_CHAR_COLOR ));      // 
font color
+        pISet->Put( SvxColorItem(Color(0x00355269), 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));      // font color
     }
     // Graphic > Shapes > Outlines > Green
     {
@@ -522,7 +522,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_GREEN );
         pISet = &pSheet->GetItemSet();
         pISet->Put( XLineColorItem(OUString(), Color(0x00127622)) );       // 
dark green 2
-        pISet->Put( SvxColorItem(Color(0x00127622), EE_CHAR_COLOR ));      // 
font color
+        pISet->Put( SvxColorItem(Color(0x00127622), 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));      // font color
     }
     // Graphic > Shapes > Outlines > Red
     {
@@ -532,7 +532,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_RED );
         pISet = &pSheet->GetItemSet();
         pISet->Put( XLineColorItem(OUString(), Color(0x00c9211e)) );       // 
dark red 2
-        pISet->Put( SvxColorItem(Color(0x00c9211e), EE_CHAR_COLOR ));      // 
font color
+        pISet->Put( SvxColorItem(Color(0x00c9211e), 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));      // font color
     }
     // Graphic > Shapes > Outlines > Yellow
     {
@@ -543,7 +543,7 @@ void SdDrawDocument::CreateLayoutTemplates()
         pISet = &pSheet->GetItemSet();
         pISet->Put( XLineStyleItem(drawing::LineStyle_SOLID));
         pISet->Put( XLineColorItem(OUString(), Color(0x00b47804)) );       // 
dark gold 2
-        pISet->Put( SvxColorItem(Color(0x00b47804), EE_CHAR_COLOR ));      // 
font color
+        pISet->Put( SvxColorItem(Color(0x00b47804), 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));      // font color
     }
     // Graphic > Lines
     OUString aLinesName;
@@ -670,7 +670,7 @@ void SdDrawDocument::CreateDefaultCellStyles()
     rISet.Put( SvxFontHeightItem( 635, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 18 
pt
     rISet.Put( SvxFontHeightItem( convertFontHeightToCTL( 635 ), 100, 
EE_CHAR_FONTHEIGHT_CTL ) ); // 18 pt
 
-    rISet.Put(SvxColorItem(COL_AUTO, EE_CHAR_COLOR ));
+    rISet.Put(SvxColorItem(COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR ));
 
     // Paragraph attributes (Edit Engine)
     rISet.Put(SvxLRSpaceItem(EE_PARA_LRSPACE));
diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx
index d15aaf632b04..9101f6caeccd 100644
--- a/sd/source/core/stlpool.cxx
+++ b/sd/source/core/stlpool.cxx
@@ -238,8 +238,8 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
                 rSet.Put( SvxContourItem(false, EE_CHAR_OUTLINE ) );
                 rSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK ) );
                 rSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF) 
);
-                rSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_COLOR) );
-                rSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR )  );
+                rSet.Put( SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR) );
+                rSet.Put( SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_BKGCOLOR )  );
                 rSet.Put( XLineStyleItem(css::drawing::LineStyle_NONE) );
                 rSet.Put( XFillStyleItem(drawing::FillStyle_NONE) );
                 rSet.Put( 
SdrTextFitToSizeTypeItem(drawing::TextFitToSizeType_AUTOFIT) );
@@ -353,8 +353,8 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
         rTitleSet.Put(SvxContourItem(false, EE_CHAR_OUTLINE ));
         rTitleSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK ) );
         rTitleSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF ) );
-        rTitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_COLOR ));
-        rTitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR ));
+        rTitleSet.Put(SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rTitleSet), EE_CHAR_COLOR ));
+        rTitleSet.Put(SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rTitleSet), EE_CHAR_BKGCOLOR ));
         rTitleSet.Put(SvxAdjustItem(SvxAdjust::Center, EE_PARA_JUST ));
         rTitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
         // #i16874# enable kerning by default but only for new documents
@@ -399,8 +399,8 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
         rSubtitleSet.Put(SvxContourItem(false, EE_CHAR_OUTLINE ));
         rSubtitleSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK ) );
         rSubtitleSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF ) 
);
-        rSubtitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_COLOR ));
-        rSubtitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR ));
+        rSubtitleSet.Put(SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rSubtitleSet), EE_CHAR_COLOR ));
+        rSubtitleSet.Put(SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rSubtitleSet), EE_CHAR_BKGCOLOR));
         rSubtitleSet.Put(SvxAdjustItem(SvxAdjust::Center, EE_PARA_JUST ));
         rSubtitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) );
         // #i16874# enable kerning by default but only for new documents
@@ -448,8 +448,8 @@ void 
SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName,
         rNotesSet.Put( SvxContourItem(false, EE_CHAR_OUTLINE ) );
         rNotesSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, 
EE_CHAR_EMPHASISMARK ) );
         rNotesSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF) );
-        rNotesSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_COLOR ) );
-        rNotesSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR ) );
+        rNotesSet.Put( SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rNotesSet), EE_CHAR_COLOR ) );
+        rNotesSet.Put( SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(rNotesSet), EE_CHAR_BKGCOLOR));
         rNotesSet.Put( SvxLRSpaceItem( 0, 0, 600, -600, EE_PARA_LRSPACE  ) );
         // #i16874# enable kerning by default but only for new documents
         rNotesSet.Put( SvxAutoKernItem( true, EE_CHAR_PAIRKERNING ) );
diff --git a/sd/source/ui/func/fuchar.cxx b/sd/source/ui/func/fuchar.cxx
index a1c69e25b041..b2981167b888 100644
--- a/sd/source/ui/func/fuchar.cxx
+++ b/sd/source/ui/func/fuchar.cxx
@@ -85,7 +85,7 @@ void FuChar::DoExecute( SfxRequest& rReq )
 
         if ( pBrushItem )
         {
-            SvxColorItem aBackColorItem( pBrushItem->GetColor(), 
EE_CHAR_BKGCOLOR );
+            SvxColorItem aBackColorItem( pBrushItem->GetColor(), 
ColorSets::getColorSetsFromItemSet(aOtherSet), EE_CHAR_BKGCOLOR );
             aOtherSet.ClearItem( SID_ATTR_BRUSH_CHAR );
             aOtherSet.Put( aBackColorItem );
         }
diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx
index d6b7fa49115d..8cb9045a01a7 100644
--- a/sd/source/ui/func/fuoaprms.cxx
+++ b/sd/source/ui/func/fuoaprms.cxx
@@ -373,11 +373,11 @@ void FuObjectAnimationParameters::DoExecute( SfxRequest& 
rReq )
             aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, false));
 
         if (nFadeColorSet == ATTR_SET)
-            aSet.Put(SvxColorItem(aFadeColor, ATTR_ANIMATION_COLOR));
+            aSet.Put(SvxColorItem(aFadeColor, 
ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR));
         else if (nFadeColorSet == ATTR_MIXED)
             aSet.InvalidateItem(ATTR_ANIMATION_COLOR);
         else
-            aSet.Put(SvxColorItem(COL_LIGHTGRAY, ATTR_ANIMATION_COLOR));
+            aSet.Put(SvxColorItem(COL_LIGHTGRAY, 
ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR));
 
         if (nInvisibleSet == ATTR_SET)
             aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, bInvisible));
diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx
index a29fb21ab35c..f3ac1150196c 100644
--- a/sd/source/ui/func/futempl.cxx
+++ b/sd/source/ui/func/futempl.cxx
@@ -390,7 +390,7 @@ void FuTemplate::DoExecute( SfxRequest& rReq )
 
                             if ( pBrushItem )
                             {
-                                SvxColorItem 
aBackColorItem(pBrushItem->GetColor(), EE_CHAR_BKGCOLOR);
+                                SvxColorItem 
aBackColorItem(pBrushItem->GetColor(), 
ColorSets::getColorSetsFromItemSet(aTempSet), EE_CHAR_BKGCOLOR);
                                 aTempSet.ClearItem( EE_CHAR_BKGCOLOR );
                                 aTempSet.Put( aBackColorItem );
                             }
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 8c636345fc5b..e7193e5f2de6 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -88,14 +88,14 @@ namespace
         {
             case SID_ATTR_CHAR_COLOR:
             {
-                SvxColorItem aColorItem(aColor, EE_CHAR_COLOR);
+                SvxColorItem aColorItem(aColor, 
ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_COLOR);
                 pArgs->Put(aColorItem);
                 break;
             }
 
             case SID_ATTR_CHAR_BACK_COLOR:
             {
-                SvxColorItem pBackgroundItem(aColor, EE_CHAR_BKGCOLOR);
+                SvxColorItem pBackgroundItem(aColor, 
ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_BKGCOLOR);
                 pArgs->Put(pBackgroundItem);
                 break;
             }
diff --git a/sfx2/source/styles/ColorSets.cxx b/sfx2/source/styles/ColorSets.cxx
index 96b9370978f7..f721510ae9c0 100644
--- a/sfx2/source/styles/ColorSets.cxx
+++ b/sfx2/source/styles/ColorSets.cxx
@@ -8,6 +8,7 @@
  *
  */
 
+#include "sal/log.hxx"
 #include <memory>
 #include <sfx2/ColorSets.hxx>
 
@@ -124,6 +125,18 @@ void ColorSets::setThemeColorSet(std::u16string_view rName)
     }
 }
 
+ColorSets* ColorSets::getColorSetsFromItemSet(const SfxItemSet& rSet)
+{
+    if (const SfxColorSetListItem* const pColorSetListItem = 
rSet.GetItem(SID_COLOR_SETS))
+    {
+        return &pColorSetListItem->GetSfxColorSetList();
+    }
+    else
+    {
+        return nullptr;
+    }
+}
+
 SfxColorSetListItem::SfxColorSetListItem() {}
 
 SfxColorSetListItem::SfxColorSetListItem(const ColorSets& rColorSets, 
sal_uInt16 nW)
diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx 
b/svx/source/customshapes/EnhancedCustomShape3d.cxx
index 9c933ef9313e..ca07f70392e1 100644
--- a/svx/source/customshapes/EnhancedCustomShape3d.cxx
+++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx
@@ -681,14 +681,14 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
             if ( nAmbientColor > 255 )
                 nAmbientColor = 255;
             Color aGlobalAmbientColor( static_cast<sal_uInt8>(nAmbientColor), 
static_cast<sal_uInt8>(nAmbientColor), static_cast<sal_uInt8>(nAmbientColor) );
-            pScene->GetProperties().SetObjectItem( makeSvx3DAmbientcolorItem( 
aGlobalAmbientColor ) );
+            pScene->GetProperties().SetObjectItem( makeSvx3DAmbientcolorItem( 
aGlobalAmbientColor, pScene->GetMergedItemSet() ) );
 
             sal_uInt8 nSpotLight1 = static_cast<sal_uInt8>( fLightIntensity * 
255.0 );
             basegfx::B3DVector aSpotLight1( aFirstLightDirection.DirectionX, - 
( aFirstLightDirection.DirectionY ), -( aFirstLightDirection.DirectionZ ) );
             aSpotLight1.normalize();
             pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff1Item( 
true ) );
             Color aAmbientSpot1Color( nSpotLight1, nSpotLight1, nSpotLight1 );
-            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor1Item( 
aAmbientSpot1Color ) );
+            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor1Item( 
aAmbientSpot1Color, pScene->GetMergedItemSet() ) );
             pScene->GetProperties().SetObjectItem( 
makeSvx3DLightDirection1Item( aSpotLight1 ) );
 
             sal_uInt8 nSpotLight2 = static_cast<sal_uInt8>( fLight2Intensity * 
255.0 );
@@ -696,14 +696,14 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
             aSpotLight2.normalize();
             pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff2Item( 
true ) );
             Color aAmbientSpot2Color( nSpotLight2, nSpotLight2, nSpotLight2 );
-            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor2Item( 
aAmbientSpot2Color ) );
+            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor2Item( 
aAmbientSpot2Color, pScene->GetMergedItemSet() ) );
             pScene->GetProperties().SetObjectItem( 
makeSvx3DLightDirection2Item( aSpotLight2 ) );
 
             sal_uInt8 nSpotLight3 = 70;
             basegfx::B3DVector aSpotLight3( 0.0, 0.0, 1.0 );
             pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff3Item( 
true ) );
             Color aAmbientSpot3Color( nSpotLight3, nSpotLight3, nSpotLight3 );
-            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor3Item( 
aAmbientSpot3Color ) );
+            pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor3Item( 
aAmbientSpot3Color, pScene->GetMergedItemSet() ) );
             pScene->GetProperties().SetObjectItem( 
makeSvx3DLightDirection3Item( aSpotLight3 ) );
 
             double fSpecular = GetDouble( rGeometryItem, "Specularity", 0 ) / 
100;
@@ -721,7 +721,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
             else if ( nIntensity < 0 )
                 nIntensity = 0;
             nIntensity = 100 - nIntensity;
-            pScene->GetProperties().SetObjectItem( 
makeSvx3DMaterialSpecularItem( aSpecularCol ) );
+            pScene->GetProperties().SetObjectItem( 
makeSvx3DMaterialSpecularItem( aSpecularCol, pScene->GetMergedItemSet() ) );
             pScene->GetProperties().SetObjectItem( 
makeSvx3DMaterialSpecularIntensityItem( static_cast<sal_uInt16>(nIntensity) ) );
 
             pScene->SetLogicRect(
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index a3bd5f9ce430..579cb8632603 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -1843,7 +1843,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight1->IsNoSelection())
     {
         aColor = m_xLbLight1->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor1Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor1Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_1);
@@ -1868,7 +1868,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight2->IsNoSelection())
     {
         aColor = m_xLbLight2->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor2Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor2Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_2);
@@ -1892,7 +1892,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight3->IsNoSelection())
     {
         aColor = m_xLbLight3->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor3Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor3Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_3);
@@ -1916,7 +1916,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight4->IsNoSelection())
     {
         aColor = m_xLbLight4->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor4Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor4Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_4);
@@ -1940,7 +1940,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight5->IsNoSelection())
     {
         aColor = m_xLbLight5->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor5Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor5Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_5);
@@ -1964,7 +1964,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight6->IsNoSelection())
     {
         aColor = m_xLbLight6->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor6Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor6Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_6);
@@ -1988,7 +1988,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight7->IsNoSelection())
     {
         aColor = m_xLbLight7->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor7Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor7Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_7);
@@ -2012,7 +2012,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbLight8->IsNoSelection())
     {
         aColor = m_xLbLight8->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DLightcolor8Item(aColor));
+        rAttrs.Put(makeSvx3DLightcolor8Item(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_8);
@@ -2036,7 +2036,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbAmbientlight->IsNoSelection())
     {
         aColor = m_xLbAmbientlight->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DAmbientcolorItem(aColor));
+        rAttrs.Put(makeSvx3DAmbientcolorItem(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DSCENE_AMBIENTCOLOR);
@@ -2123,7 +2123,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbMatEmission->IsNoSelection())
     {
         aColor = m_xLbMatEmission->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DMaterialEmissionItem(aColor));
+        rAttrs.Put(makeSvx3DMaterialEmissionItem(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_EMISSION);
@@ -2132,7 +2132,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
     if (!m_xLbMatSpecular->IsNoSelection())
     {
         aColor = m_xLbMatSpecular->GetSelectEntryColor();
-        rAttrs.Put(makeSvx3DMaterialSpecularItem(aColor));
+        rAttrs.Put(makeSvx3DMaterialSpecularItem(aColor, rAttrs));
     }
     else
         rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_SPECULAR);
@@ -2632,15 +2632,15 @@ void Svx3DWin::ClickLight(const LightButton& rBtn)
 
     switch(nLightSource)
     {
-        case 0: aLightItemSet.Put(makeSvx3DLightcolor1Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff1Item(bOnOff)); break;
-        case 1: aLightItemSet.Put(makeSvx3DLightcolor2Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff2Item(bOnOff)); break;
-        case 2: aLightItemSet.Put(makeSvx3DLightcolor3Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff3Item(bOnOff)); break;
-        case 3: aLightItemSet.Put(makeSvx3DLightcolor4Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff4Item(bOnOff)); break;
-        case 4: aLightItemSet.Put(makeSvx3DLightcolor5Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff5Item(bOnOff)); break;
-        case 5: aLightItemSet.Put(makeSvx3DLightcolor6Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff6Item(bOnOff)); break;
-        case 6: aLightItemSet.Put(makeSvx3DLightcolor7Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff7Item(bOnOff)); break;
+        case 0: aLightItemSet.Put(makeSvx3DLightcolor1Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff1Item(bOnOff)); break;
+        case 1: aLightItemSet.Put(makeSvx3DLightcolor2Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff2Item(bOnOff)); break;
+        case 2: aLightItemSet.Put(makeSvx3DLightcolor3Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff3Item(bOnOff)); break;
+        case 3: aLightItemSet.Put(makeSvx3DLightcolor4Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff4Item(bOnOff)); break;
+        case 4: aLightItemSet.Put(makeSvx3DLightcolor5Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff5Item(bOnOff)); break;
+        case 5: aLightItemSet.Put(makeSvx3DLightcolor6Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff6Item(bOnOff)); break;
+        case 6: aLightItemSet.Put(makeSvx3DLightcolor7Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff7Item(bOnOff)); break;
         default:
-        case 7: aLightItemSet.Put(makeSvx3DLightcolor8Item(aColor)); 
aLightItemSet.Put(makeSvx3DLightOnOff8Item(bOnOff)); break;
+        case 7: aLightItemSet.Put(makeSvx3DLightcolor8Item(aColor, 
aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff8Item(bOnOff)); break;
     }
 
     m_xCtlLightPreview->GetSvx3DLightControl().Set3DAttributes(aLightItemSet);
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index c2e43c07d43c..f68a944982dc 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -418,7 +418,7 @@ void ImpSdrGDIMetaFileImport::SetAttributes(SdrObject* 
pObj, bool bForceTextAttr
 
         mpTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), 
EE_CHAR_WLM));
         mpTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE));
-        mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), EE_CHAR_COLOR));
+        mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), 
ColorSets::getColorSetsFromItemSet(*mpTextAttr), EE_CHAR_COLOR));
         //... svxfont textitem svditext
         mbFntDirty = false;
     }
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index adb68732d0cb..a09c357ff7f0 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -376,7 +376,8 @@ void ImpSdrPdfImport::SetAttributes(SdrObject* pObj, bool 
bForceTextAttr)
 
         mpTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), 
EE_CHAR_WLM));
         mpTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE));
-        mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), EE_CHAR_COLOR));
+        mpTextAttr->Put(SvxColorItem(
+            mpVD->GetTextColor(), 
ColorSets::getColorSetsFromItemSet(*mpTextAttr), EE_CHAR_COLOR));
         //... svxfont textitem svditext
         mbFntDirty = false;
     }
diff --git a/svx/source/toolbars/extrusionbar.cxx 
b/svx/source/toolbars/extrusionbar.cxx
index 51fecface297..ddbedbd728a2 100644
--- a/svx/source/toolbars/extrusionbar.cxx
+++ b/svx/source/toolbars/extrusionbar.cxx
@@ -1188,7 +1188,7 @@ static void getExtrusionColorState( SdrView const * 
pSdrView, SfxItemSet& rSet )
         aFinalColor = COL_AUTO;
 
     if( bHasCustomShape )
-        rSet.Put( SvxColorItem( aFinalColor, SID_EXTRUSION_3D_COLOR ) );
+        rSet.Put( SvxColorItem( aFinalColor, 
ColorSets::getColorSetsFromItemSet(rSet), SID_EXTRUSION_3D_COLOR ) );
     else
         rSet.DisableItem( SID_EXTRUSION_3D_COLOR );
 }
diff --git a/sw/source/core/doc/DocumentStylePoolManager.cxx 
b/sw/source/core/doc/DocumentStylePoolManager.cxx
index 49e399a78a07..1c995ee33009 100644
--- a/sw/source/core/doc/DocumentStylePoolManager.cxx
+++ b/sw/source/core/doc/DocumentStylePoolManager.cxx
@@ -1547,7 +1547,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( 
sal_uInt16 nId )
 
     case RES_POOLCHR_INET_NORMAL:
         {
-            aSet.Put( SvxColorItem( COL_BLUE, RES_CHRATR_COLOR ) );
+            aSet.Put( SvxColorItem( COL_BLUE, 
ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) );
             aSet.Put( SvxUnderlineItem( LINESTYLE_SINGLE, RES_CHRATR_UNDERLINE 
) );
             // i40133: patch submitted by rail: set language to 'none' to 
prevent spell checking:
             aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) );
@@ -1557,7 +1557,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( 
sal_uInt16 nId )
         break;
     case RES_POOLCHR_INET_VISIT:
         {
-            aSet.Put( SvxColorItem( COL_RED, RES_CHRATR_COLOR ) );
+            aSet.Put( SvxColorItem( COL_RED, 
ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) );
             aSet.Put( SvxUnderlineItem( LINESTYLE_SINGLE, RES_CHRATR_UNDERLINE 
) );
             aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) );
             aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CJK_LANGUAGE 
) );
@@ -1566,7 +1566,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( 
sal_uInt16 nId )
         break;
     case RES_POOLCHR_JUMPEDIT:
         {
-            aSet.Put( SvxColorItem( COL_CYAN, RES_CHRATR_COLOR ) );
+            aSet.Put( SvxColorItem( COL_CYAN, 
ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) );
             aSet.Put( SvxUnderlineItem( LINESTYLE_DOTTED, RES_CHRATR_UNDERLINE 
) );
             aSet.Put( SvxCaseMapItem( SvxCaseMap::SmallCaps, 
RES_CHRATR_CASEMAP ) );
         }
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index c2f3b3bd9764..c838692e7448 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -145,7 +145,7 @@ void InsTableBox( SwDoc& rDoc, SwTableNode* pTableNd,
         {
             SwAttrSet aAttrSet( *pCNd->GetpSwAttrSet() );
             if( pBox->GetSaveUserColor() )
-                aAttrSet.Put( SvxColorItem( *pBox->GetSaveUserColor(), 
RES_CHRATR_COLOR ));
+                aAttrSet.Put( SvxColorItem( *pBox->GetSaveUserColor(), 
ColorSets::getColorSetsFromItemSet(aAttrSet), RES_CHRATR_COLOR ));
             else
                 aAttrSet.ClearItem( RES_CHRATR_COLOR );
             rDoc.GetNodes().InsBoxen( pTableNd, pLine, pBoxFrameFormat,
diff --git a/sw/source/filter/html/htmldrawreader.cxx 
b/sw/source/filter/html/htmldrawreader.cxx
index 61ab1d493982..4cf9de7714f1 100644
--- a/sw/source/filter/html/htmldrawreader.cxx
+++ b/sw/source/filter/html/htmldrawreader.cxx
@@ -394,7 +394,7 @@ void SwHTMLParser::NewMarquee( HTMLTable *pCurTable )
     const Color& rDfltColor =
         m_pCSS1Parser->GetTextCollFromPool( RES_POOLCOLL_STANDARD )
             ->GetColor().GetValue();
-    aItemSet.Put( SvxColorItem( rDfltColor, EE_CHAR_COLOR ) );
+    aItemSet.Put(SvxColorItem(rDfltColor, 
ColorSets::getColorSetsFromItemSet(aItemSet), EE_CHAR_COLOR));
 
     // set the attributes of the current paragraph style
     sal_uInt16 nWhichIds[] =
diff --git a/sw/source/filter/html/htmlforw.cxx 
b/sw/source/filter/html/htmlforw.cxx
index 64d1beb7de46..7af2d441ee70 100644
--- a/sw/source/filter/html/htmlforw.cxx
+++ b/sw/source/filter/html/htmlforw.cxx
@@ -1060,7 +1060,7 @@ Writer& OutHTML_DrawFrameFormatAsControl( Writer& rWrt,
             if( auto n = o3tl::tryAccess<sal_Int32>(aTmp) )
             {
                 Color aColor( ColorTransparency, *n );
-                aItemSet.Put( SvxColorItem( aColor, RES_CHRATR_COLOR ) );
+                aItemSet.Put( SvxColorItem( aColor, 
ColorSets::getColorSetsFromItemSet(aItemSet), RES_CHRATR_COLOR ) );
             }
         }
         if( xPropSetInfo->hasPropertyByName( "FontHeight" ) )
diff --git a/sw/source/filter/html/svxcss1.cxx 
b/sw/source/filter/html/svxcss1.cxx
index 280c927320d0..c715741dae4a 100644
--- a/sw/source/filter/html/svxcss1.cxx
+++ b/sw/source/filter/html/svxcss1.cxx
@@ -1286,7 +1286,7 @@ static void ParseCSS1_color( const CSS1Expression *pExpr,
         {
             Color aColor;
             if( pExpr->GetColor( aColor ) )
-                rItemSet.Put( SvxColorItem( aColor, aItemIds.nColor ) );
+                rItemSet.Put( SvxColorItem( aColor, 
ColorSets::getColorSetsFromItemSet(rItemSet), aItemIds.nColor ) );
         }
         break;
     default:
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index beedbf13bbb7..b9901ef4cdc1 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -3857,7 +3857,7 @@ void SwHTMLParser::NewFontAttr( HtmlTokenId nToken )
             aItemSet.Put( aFontHeightCTL );
         }
         if( bColor )
-            aItemSet.Put( SvxColorItem(aColor, RES_CHRATR_COLOR) );
+            aItemSet.Put( SvxColorItem(aColor, 
ColorSets::getColorSetsFromItemSet(aItemSet), RES_CHRATR_COLOR) );
         if( !aFontName.isEmpty() )
         {
             SvxFontItem aFont( eFamily, aFontName, aStyleName, ePitch, eEnc, 
RES_CHRATR_FONT );
diff --git a/sw/source/uibase/app/docshini.cxx 
b/sw/source/uibase/app/docshini.cxx
index 284d4a84afdd..5a636b1b9be9 100644
--- a/sw/source/uibase/app/docshini.cxx
+++ b/sw/source/uibase/app/docshini.cxx
@@ -660,7 +660,7 @@ void SwDocShell::SubInitNew()
             aDfltSet.Put( SvxTabStopItem( 1, nNewPos,
                                           SvxTabAdjust::Default, 
RES_PARATR_TABSTOP ) );
     }
-    aDfltSet.Put( SvxColorItem( COL_AUTO, RES_CHRATR_COLOR ) );
+    aDfltSet.Put( SvxColorItem( COL_AUTO, 
ColorSets::getColorSetsFromItemSet(aDfltSet), RES_CHRATR_COLOR ) );
 
     m_xDoc->SetDefault( aDfltSet );
 
diff --git a/sw/source/uibase/app/swmodul1.cxx 
b/sw/source/uibase/app/swmodul1.cxx
index c396d437fd0f..49c1b66e7205 100644
--- a/sw/source/uibase/app/swmodul1.cxx
+++ b/sw/source/uibase/app/swmodul1.cxx
@@ -516,7 +516,7 @@ static void lcl_FillAuthorAttr( std::size_t nAuthor, 
SfxItemSet &rSet,
     }
 
     if( !bBackGr )
-        rSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
+        rSet.Put( SvxColorItem( aCol, 
ColorSets::getColorSetsFromItemSet(rSet), RES_CHRATR_COLOR ) );
 }
 
 void SwModule::GetInsertAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet)
diff --git a/sw/source/uibase/shells/basesh.cxx 
b/sw/source/uibase/shells/basesh.cxx
index a81ae435829c..b272a869e7b3 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -2376,7 +2376,7 @@ void SwBaseShell::GetBckColState(SfxItemSet &rSet)
             case SID_BACKGROUND_COLOR:
             case SID_TABLE_CELL_BACKGROUND_COLOR:
             {
-                SvxColorItem aColorItem(aBrushItem->GetColor(), nWhich);
+                SvxColorItem aColorItem(aBrushItem->GetColor(), 
ColorSets::getColorSetsFromItemSet(rSet), nWhich);
                 rSet.Put(aColorItem);
                 break;
             }
diff --git a/sw/source/uibase/shells/drwtxtex.cxx 
b/sw/source/uibase/shells/drwtxtex.cxx
index 770b46d7e7ba..d459f3b7480c 100644
--- a/sw/source/uibase/shells/drwtxtex.cxx
+++ b/sw/source/uibase/shells/drwtxtex.cxx
@@ -105,14 +105,14 @@ namespace
         {
             case SID_ATTR_CHAR_COLOR:
             {
-                SvxColorItem aColorItem(aColor, EE_CHAR_COLOR);
+                SvxColorItem aColorItem(aColor, 
ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_COLOR);
                 pArgs->Put(aColorItem);
                 break;
             }
 
             case SID_ATTR_CHAR_BACK_COLOR:
             {
-                SvxColorItem pBackgroundItem(aColor, EE_CHAR_BKGCOLOR);
+                SvxColorItem pBackgroundItem(aColor, 
ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_BKGCOLOR);
                 pArgs->Put(pBackgroundItem);
                 break;
             }
diff --git a/sw/source/uibase/shells/frmsh.cxx 
b/sw/source/uibase/shells/frmsh.cxx
index 6e990cd632b6..7ed04e7a3537 100644
--- a/sw/source/uibase/shells/frmsh.cxx
+++ b/sw/source/uibase/shells/frmsh.cxx
@@ -1294,7 +1294,7 @@ void SwFrameShell::GetLineStyleState(SfxItemSet &rSet)
             rSh.GetFlyFrameAttr(aFrameSet);
 
             const SvxBorderLine* pLine = aFrameSet.Get(RES_BOX).GetTop();
-            rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), 
SID_FRAME_LINECOLOR));
+            rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), 
ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR));
         }
     }
 }
diff --git a/sw/source/uibase/shells/tabsh.cxx 
b/sw/source/uibase/shells/tabsh.cxx
index cd231be93192..19bc50b4dd1b 100644
--- a/sw/source/uibase/shells/tabsh.cxx
+++ b/sw/source/uibase/shells/tabsh.cxx
@@ -1546,7 +1546,7 @@ void SwTableShell::GetLineStyleState(SfxItemSet &rSet)
     const SvxBoxItem& rBoxItem = aCoreSet.Get( RES_BOX );
     const SvxBorderLine* pLine = rBoxItem.GetTop();
 
-    rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), 
SID_FRAME_LINECOLOR ) );
+    rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), 
ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) );
     SvxLineItem aLine( SID_FRAME_LINESTYLE );
     aLine.SetLine(pLine);
     rSet.Put( aLine );
diff --git a/sw/source/uibase/shells/textsh1.cxx 
b/sw/source/uibase/shells/textsh1.cxx
index f500f618c48a..cafa86f08066 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -1807,12 +1807,12 @@ void SwTextShell::GetState( SfxItemSet &rSet )
                 const SvxBrushItem& aBrushItem = 
aSet.Get(RES_CHRATR_HIGHLIGHT);
                 if( aBrushItem.GetColor() != COL_TRANSPARENT )
                 {
-                    rSet.Put( SvxColorItem(aBrushItem.GetColor(), nWhich) );
+                    rSet.Put( SvxColorItem(aBrushItem.GetColor(), 
ColorSets::getColorSetsFromItemSet(rSet), nWhich) );
                 }
                 else
                 {
                     const SvxBrushItem& aBrushItem2 = 
aSet.Get(RES_CHRATR_BACKGROUND);
-                    rSet.Put( SvxColorItem(aBrushItem2.GetColor(), nWhich) );
+                    rSet.Put( SvxColorItem(aBrushItem2.GetColor(), 
ColorSets::getColorSetsFromItemSet(rSet), nWhich) );
                 }
             }
             break;

Reply via email to