Index: scribus/iconmanager.cpp
===================================================================
--- scribus/iconmanager.cpp	(Revision 26726)
+++ scribus/iconmanager.cpp	(Arbeitskopie)
@@ -36,8 +36,6 @@
 	: QObject(parent)
 {
 	m_splashScreenRect = QRect();
-	m_splashScreen = QPixmap();
-
 }
 
 IconManager& IconManager::instance()
@@ -64,7 +62,7 @@
 	}
 
 #if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
-	connect(QGuiApplication::styleHints(), &QStyleHints::colorSchemeChanged, this, &IconManager::changeColorScheme);
+	connect(qApp->styleHints(), &QStyleHints::colorSchemeChanged, this, &IconManager::changeColorScheme);
 #endif
 
 	return true;
@@ -134,20 +132,18 @@
 
 bool IconManager::iconsForDarkMode() const
 {	
-#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
-	switch(qApp->styleHints()->colorScheme())
-	{
-	case Qt::ColorScheme::Unknown:
-	case Qt::ColorScheme::Light:
-		return false;
-	case Qt::ColorScheme::Dark:
-		return true;
-	default:
-		return false;
-	}
-#else
+// #if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
+// 	if (qApp->styleHints()->colorScheme() == Qt::ColorScheme::Light)
+// 		return false;
+// 	else if (qApp->styleHints()->colorScheme() == Qt::ColorScheme::Dark)
+// 		return true;
+// 	else
+// 		return (baseColor().lightness() >= 128) ? true : false;
+// #else
+// 	return (baseColor().lightness() >= 128) ? true : false;
+// #endif
+
 	return (baseColor().lightness() >= 128) ? true : false;
-#endif
 }
 
 void IconManager::rebuildCache()
@@ -608,10 +604,8 @@
 					w = (e.hasAttribute("width")) ? e.attribute("width").toInt() : 0;
 					h = (e.hasAttribute("height")) ? e.attribute("height").toInt() : 0;
 					isd.splashMessgeRect = QRect(l,t,w,h);
-					if (iconsForDarkMode())
-						isd.splashScreenPath = (e.hasAttribute("imageDark")) ? e.attribute("imageDark") : "";
-					else
-						isd.splashScreenPath = (e.hasAttribute("imageLight")) ? e.attribute("imageLight") : "";
+					isd.splashScreenDarkPath = (e.hasAttribute("imageDark")) ? e.attribute("imageDark") : "";
+					isd.splashScreenLightPath = (e.hasAttribute("imageLight")) ? e.attribute("imageLight") : "";
 
 				}
 				else if (e.tagName() == "nametext")
@@ -663,7 +657,6 @@
 				m_activeSetBasename = isd.baseName;
 				m_activeSetVersion = isd.activeversion;
 				m_splashScreenRect = isd.splashMessgeRect;
-				m_splashScreen = QPixmap(pathForIcon(isd.splashScreenPath));
 			}
 		}
 	}
@@ -677,13 +670,12 @@
 	m_activeSetBasename = m_iconSets[prefsSet].baseName;
 	m_activeSetVersion = m_iconSets[prefsSet].activeversion;
 	m_splashScreenRect = m_iconSets[prefsSet].splashMessgeRect;
-	m_splashScreen = QPixmap(pathForIcon(m_iconSets[prefsSet].splashScreenPath));
 
 	rebuildCache();
 	return true;
 }
 
-QString IconManager::pathForIcon(const QString& name)
+QString IconManager::pathForIcon(const QString &name) const
 {
 	//QString iconset(PrefsManager::instance().appPrefs.uiPrefs.iconSet);
 	QString iconSubdir(m_iconSets[m_activeSetBasename].path + "/");
@@ -746,5 +738,8 @@
 
 QPixmap IconManager::splashScreen() const
 {
-	return m_splashScreen;
+	if (iconsForDarkMode())
+		return QPixmap(pathForIcon(m_iconSets[m_activeSetBasename].splashScreenDarkPath));
+	else
+		return QPixmap(pathForIcon(m_iconSets[m_activeSetBasename].splashScreenLightPath));
 }
Index: scribus/iconmanager.h
===================================================================
--- scribus/iconmanager.h	(Revision 26726)
+++ scribus/iconmanager.h	(Arbeitskopie)
@@ -43,7 +43,6 @@
 	void operator=(IconManager const&) = delete;
 	static IconManager& instance();
 
-	void setIconsForDarkMode(bool forDarkMode);
 	QColor baseColor() const;
 	bool iconsForDarkMode() const;
 	bool setup();
@@ -60,7 +59,7 @@
 
 	bool setActiveFromPrefs(const QString& prefsSet);
 	QString activeSetBasename() { return m_activeSetBasename; }
-	QString pathForIcon(const QString& name);
+	QString pathForIcon(const QString& name) const;
 	QString baseNameForTranslation(const QString& transName) const;
 	QStringList nameList(const QString& language) const;
 
@@ -95,7 +94,6 @@
 	QString m_backupSetBasename;
 	QString m_backupSetVersion;
 	QRect m_splashScreenRect;
-	QPixmap m_splashScreen;
 	qreal m_devicePixelRatio { 1.0 };
 
 	bool initIconSets();
Index: scribus/prefsmanager.cpp
===================================================================
--- scribus/prefsmanager.cpp	(Revision 26726)
+++ scribus/prefsmanager.cpp	(Arbeitskopie)
@@ -157,6 +157,7 @@
 	appPrefs.uiPrefs.mouseMoveTimeout = 150;
 	appPrefs.uiPrefs.wheelJump = 40;
 	appPrefs.uiPrefs.style = "";
+	appPrefs.uiPrefs.stylePalette = "auto";
 	// On Windows, use the Fusion theme by default when possible,
 	// the old Windows and windowsvista style do not support dark theme
 #if defined Q_OS_WINDOWS
@@ -1360,6 +1361,7 @@
 	dcUI.setAttribute("UseDocumentTabs", static_cast<int>(appPrefs.uiPrefs.useTabs));
 	dcUI.setAttribute("StickyTools", static_cast<int>(appPrefs.uiPrefs.stickyTools));
 	dcUI.setAttribute("Theme", appPrefs.uiPrefs.style);
+	dcUI.setAttribute("ThemePalette", appPrefs.uiPrefs.stylePalette);
 	dcUI.setAttribute("ScrollWheelJump", appPrefs.uiPrefs.wheelJump);
 	dcUI.setAttribute("MouseMoveTimeout", appPrefs.uiPrefs.mouseMoveTimeout);
 	dcUI.setAttribute("ApplicationFontSize", appPrefs.uiPrefs.applicationFontSize);
@@ -2038,6 +2040,7 @@
 		if (dc.tagName() == "UI")
 		{
 			appPrefs.uiPrefs.style = dc.attribute("Theme", "Default");
+			appPrefs.uiPrefs.stylePalette = dc.attribute("ThemePalette", "auto");
 			appPrefs.uiPrefs.wheelJump = dc.attribute("ScrollWheelJump").toInt();
 			appPrefs.uiPrefs.mouseMoveTimeout = dc.attribute("MouseMoveTimeout", "150").toInt();
 			appPrefs.uiPrefs.applicationFontSize = dc.attribute("ApplicationFontSize", "12").toInt();
Index: scribus/prefsstructs.h
===================================================================
--- scribus/prefsstructs.h	(Revision 26726)
+++ scribus/prefsstructs.h	(Arbeitskopie)
@@ -119,6 +119,7 @@
 	int applicationFontSize {12}; //! Font size to use in the application, apart from pßalettes
 	int paletteFontSize {10}; //! Font size to use in the palettes
 	QString style; 	//! Currently used QStyle name
+	QString stylePalette; //! UI theme palette, dark, light, auto
 	int recentDocCount {5}; //! Number of recent documents to remember
 	QStringList RecentDocs; //! List of recent documents
 	QString language; //! Language of the user interface
@@ -539,7 +540,8 @@
 	QString variant;
 	bool isDefault;
 	QRect splashMessgeRect;
-	QString splashScreenPath;
+	QString splashScreenLightPath;
+	QString splashScreenDarkPath;
 	QMap<QString, QString> nameTranslations;
 };
 
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp	(Revision 26726)
+++ scribus/scribus.cpp	(Arbeitskopie)
@@ -6496,9 +6441,44 @@
 	m_prefsManager.appPrefs.uiPrefs.language = ScQApp->currGUILanguage();
 	LocaleManager::instance().setUserPreferredLocale(m_prefsManager.appPrefs.uiPrefs.userPreferredLocale);
 	ScQApp->setLocale();
+
+	bool forceStyleUpdate = false;
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 8, 0))
+	QString newUIStylePalette = m_prefsManager.appPrefs.uiPrefs.stylePalette;
+	if (oldPrefs.uiPrefs.stylePalette != newUIStylePalette)
+	{
+		forceStyleUpdate = true;
+
+		if (newUIStylePalette == "dark")
+		{
+			QApplication::styleHints()->setColorScheme(Qt::ColorScheme::Dark);
+#if (defined Q_OS_LINUX)
+			QPalette pal(QColor(49, 49, 49));
+			QApplication::setPalette(pal);
+#endif
+		}
+		else if (newUIStylePalette == "light")
+		{
+			QApplication::styleHints()->setColorScheme(Qt::ColorScheme::Light);
+#if (defined Q_OS_LINUX)
+			QPalette pal(QColor(239, 239, 239));
+			QApplication::setPalette(pal);
+#endif
+		}
+		else
+		{
+			QApplication::styleHints()->unsetColorScheme();
+			QApplication::setPalette(this->style()->standardPalette());
+		}
+	}
+#endif
+
+	bool forceIconUpdate = false;
 	QString newUIStyle = m_prefsManager.guiStyle();
-	if (oldPrefs.uiPrefs.style != newUIStyle)
+	if (oldPrefs.uiPrefs.style != newUIStyle || forceStyleUpdate == true)
 	{
+		forceIconUpdate = true;
+
 		QString styleName = m_prefsManager.guiSystemStyle();
 		if (!newUIStyle.isEmpty())
 			styleName = newUIStyle;
@@ -6511,7 +6491,7 @@
 
 	QString newIconSet = m_prefsManager.guiIconSet();
 	// Recreate icons if icon set or GUI changed. For GUI change the icon recreation will automatically detect light and dark themes
-	if (oldPrefs.uiPrefs.iconSet != newIconSet || oldPrefs.uiPrefs.style != newUIStyle)
+	if (oldPrefs.uiPrefs.iconSet != newIconSet || forceIconUpdate == true)
 		ScQApp->changeIconSet(newIconSet);
 
 	ScQApp->changeLabelVisibility(m_prefsManager.appPrefs.uiPrefs.showLabels);
Index: scribus/scribuscore.cpp
===================================================================
--- scribus/scribuscore.cpp	(Revision 26726)
+++ scribus/scribuscore.cpp	(Arbeitskopie)
@@ -30,6 +30,7 @@
 #include <QMessageBox>
 #include <QScreen>
 #include <QStyleFactory>
+#include <QStyleHints>
 
 #include "colormgmt/sccolormgmtenginefactory.h"
 #include "commonstrings.h"
@@ -175,6 +176,37 @@
 	setSplashStatus( tr("Reading Preferences") );
 	m_prefsManager.readPrefs();
 
+	// This is a very basic implemenation of the UI theme palette.
+	// If necessary implement platform specific theme configurations here.
+
+	// Apply different palette only if the system UI palette is different.
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 8, 0))
+	if (m_prefsManager.appPrefs.uiPrefs.stylePalette == "dark" && QApplication::styleHints()->colorScheme() == Qt::ColorScheme::Light)
+	{
+		QApplication::styleHints()->setColorScheme(Qt::ColorScheme::Dark);
+
+	// https://bugreports.qt.io/browse/QTBUG-132929
+#if (defined Q_OS_LINUX)
+		QPalette pal(QColor(49, 49, 49));
+		QApplication::setPalette(pal);
+#endif
+		m_SplashScreen->setPixmap(m_iconManager.splashScreen());
+	}
+	else if (m_prefsManager.appPrefs.uiPrefs.stylePalette == "light" && QApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark)
+	{
+		QApplication::styleHints()->setColorScheme(Qt::ColorScheme::Light);
+
+	// https://bugreports.qt.io/browse/QTBUG-132929
+#if (defined Q_OS_LINUX)
+		QPalette pal(QColor(239, 239, 239));
+		QApplication::setPalette(pal);
+#endif
+		m_SplashScreen->setPixmap(m_iconManager.splashScreen());
+	}
+	else
+		QApplication::setPalette(QApplication::style()->standardPalette());
+#endif
+
 	// Configure GUI
 	const QString& prefsUiStyle = m_prefsManager.appPrefs.uiPrefs.style;
 	if (prefsUiStyle.length() > 0)
Index: scribus/ui/prefs_userinterface.cpp
===================================================================
--- scribus/ui/prefs_userinterface.cpp	(Revision 26726)
+++ scribus/ui/prefs_userinterface.cpp	(Arbeitskopie)
@@ -9,6 +9,7 @@
 #include <QFontDialog>
 #include <QPixmap>
 #include <QStyleFactory>
+#include <QStyleHints>
 
 #include "iconmanager.h"
 #include "langmgr.h"
@@ -59,6 +60,12 @@
 
 void Prefs_UserInterface::languageChange()
 {
+	themePaletteComboBox->clear();
+	themePaletteComboBox->addItem(tr("Auto"), "auto");
+	themePaletteComboBox->addItem(tr("Light"), "light");
+	themePaletteComboBox->addItem(tr("Dark"), "dark");
+	themePaletteComboBox->setToolTip( "<qt>" + tr( "Choose the default theme palette. Auto uses the systems default." ) + "</qt>");
+
 	themeComboBox->setToolTip( "<qt>" + tr( "Choose the default window decoration and looks. Scribus inherits any available KDE or Qt themes, if Qt is configured to search KDE plugins." ) + "</qt>");
 	iconSetComboBox->setToolTip( "<qt>" + tr( "Choose the default icon set" ) + "</qt>");
 	useSmallWidgetsCheckBox->setToolTip( "<qt>" + tr( "Palette windows will use smaller (space savvy) widgets. Requires application restart." ) + "</qt>");
@@ -92,6 +99,13 @@
 		selectedGUILang = "en_GB";
 		langString = LanguageManager::instance()->getLangFromAbbrev(selectedGUILang);
 	}
+
+	int index = themePaletteComboBox->findData(prefsData->uiPrefs.stylePalette);
+	if ( index != -1 )
+		themePaletteComboBox->setCurrentIndex(index);
+	else
+		themePaletteComboBox->setCurrentIndex(0);
+
 	setCurrentComboItem(languageComboBox, langString);
 	numberFormatComboBox->setCurrentIndex(prefsData->uiPrefs.userPreferredLocale == "System" ? 0 : 1);
 	setCurrentComboItem(themeComboBox, prefsData->uiPrefs.style);
@@ -118,6 +132,7 @@
 	prefsData->uiPrefs.language = selectedGUILang;
 	prefsData->uiPrefs.userPreferredLocale = numberFormatComboBox->currentData().toString();
 	prefsData->uiPrefs.style = themeComboBox->currentText();
+	prefsData->uiPrefs.stylePalette = themePaletteComboBox->currentData().toString();
 	prefsData->uiPrefs.iconSet = IconManager::instance().baseNameForTranslation(iconSetComboBox->currentText());
 	prefsData->uiPrefs.applicationFontSize = fontSizeMenuSpinBox->value();
 	prefsData->uiPrefs.paletteFontSize = fontSizePaletteSpinBox->value();
@@ -133,6 +148,7 @@
 
 	prefsData->storyEditorPrefs.guiFont = seFont.toString();
 	prefsData->storyEditorPrefs.smartTextSelection = storyEditorUseSmartSelectionCheckBox->isChecked();
+
 }
 
 void Prefs_UserInterface::setSelectedGUILang(const QString &newLang)
Index: scribus/ui/prefs_userinterfacebase.ui
===================================================================
--- scribus/ui/prefs_userinterfacebase.ui	(Revision 26726)
+++ scribus/ui/prefs_userinterfacebase.ui	(Arbeitskopie)
@@ -39,7 +39,7 @@
    <item>
     <widget class="Line" name="line">
      <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -68,7 +68,7 @@
        <item>
         <widget class="Line" name="line_3">
          <property name="orientation">
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Orientation::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -75,7 +75,7 @@
        <item>
         <layout class="QFormLayout" name="formLayout">
          <property name="fieldGrowthPolicy">
-          <enum>QFormLayout::FieldsStayAtSizeHint</enum>
+          <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
          </property>
          <item row="0" column="0">
           <widget class="QLabel" name="themeLabel">
@@ -90,7 +90,7 @@
          <item row="0" column="1">
           <widget class="QComboBox" name="themeComboBox"/>
          </item>
-         <item row="1" column="0">
+         <item row="2" column="0">
           <widget class="QLabel" name="label_3">
            <property name="text">
             <string>Icon Set:</string>
@@ -97,10 +97,10 @@
            </property>
           </widget>
          </item>
-         <item row="1" column="1">
+         <item row="2" column="1">
           <widget class="QComboBox" name="iconSetComboBox"/>
          </item>
-         <item row="2" column="1">
+         <item row="3" column="1">
           <widget class="QCheckBox" name="useSmallWidgetsCheckBox">
            <property name="text">
             <string>Use Small Widgets on Palettes</string>
@@ -107,7 +107,7 @@
            </property>
           </widget>
          </item>
-         <item row="5" column="1">
+         <item row="6" column="1">
           <widget class="QCheckBox" name="useTabsForDocumentsCheckBox">
            <property name="text">
             <string>Use Tabs for Documents</string>
@@ -114,7 +114,7 @@
            </property>
           </widget>
          </item>
-         <item row="6" column="0">
+         <item row="7" column="0">
           <widget class="QLabel" name="recentDocumentsLabel">
            <property name="text">
             <string>&amp;Recent Documents:</string>
@@ -124,10 +124,10 @@
            </property>
           </widget>
          </item>
-         <item row="6" column="1">
+         <item row="7" column="1">
           <widget class="QSpinBox" name="recentDocumentsSpinBox"/>
          </item>
-         <item row="3" column="1">
+         <item row="4" column="1">
           <widget class="QCheckBox" name="showLabels">
            <property name="text">
             <string>Show Informational Labels</string>
@@ -134,7 +134,7 @@
            </property>
           </widget>
          </item>
-         <item row="4" column="1">
+         <item row="5" column="1">
           <widget class="QCheckBox" name="showLabelsOfInactiveTabs">
            <property name="text">
             <string>Show Labels of Inactive Palette Tabs</string>
@@ -141,15 +141,25 @@
            </property>
           </widget>
          </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="themePaletteLabel">
+           <property name="text">
+            <string>Appearance:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QComboBox" name="themePaletteComboBox"/>
+         </item>
         </layout>
        </item>
        <item>
         <spacer name="verticalSpacer_6">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
+          <enum>QSizePolicy::Policy::Fixed</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -174,7 +184,7 @@
        <item>
         <widget class="Line" name="line_4">
          <property name="orientation">
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Orientation::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -211,10 +221,10 @@
        <item>
         <spacer name="verticalSpacer_4">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeType">
-          <enum>QSizePolicy::Fixed</enum>
+          <enum>QSizePolicy::Policy::Fixed</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -239,7 +249,7 @@
        <item>
         <widget class="Line" name="line_2">
          <property name="orientation">
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Orientation::Horizontal</enum>
          </property>
         </widget>
        </item>
@@ -284,7 +294,7 @@
        <item>
         <spacer name="verticalSpacer_3">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -304,7 +314,7 @@
        <item>
         <layout class="QFormLayout" name="formLayout_3">
          <property name="fieldGrowthPolicy">
-          <enum>QFormLayout::FieldsStayAtSizeHint</enum>
+          <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
          </property>
          <item row="0" column="0">
           <widget class="QLabel" name="storyEditorFontLabel">
@@ -332,7 +342,7 @@
        <item>
         <spacer name="verticalSpacer_5">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -352,7 +362,7 @@
        <item>
         <layout class="QFormLayout" name="formLayout_4">
          <property name="fieldGrowthPolicy">
-          <enum>QFormLayout::FieldsStayAtSizeHint</enum>
+          <enum>QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint</enum>
          </property>
          <item row="0" column="0">
           <widget class="QLabel" name="resizeMoveDelayLabel">
@@ -392,7 +402,7 @@
        <item>
         <spacer name="verticalSpacer_2">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
@@ -430,7 +440,7 @@
        <item>
         <spacer name="verticalSpacer">
          <property name="orientation">
-          <enum>Qt::Vertical</enum>
+          <enum>Qt::Orientation::Vertical</enum>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
