Index: trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89323)
+++ trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89324)
@@ -867,4 +867,5 @@
 	src/settings/global/UIGlobalSettingsLanguage.h \
 	src/settings/global/UIGlobalSettingsDisplay.h \
+	src/settings/global/UIGlobalSettingsInterface.h \
 	src/settings/machine/UIMachineSettingsAudio.h \
 	src/settings/machine/UIMachineSettingsDisplay.h \
@@ -1408,4 +1409,5 @@
 	src/settings/global/UIGlobalSettingsLanguage.cpp \
 	src/settings/global/UIGlobalSettingsDisplay.cpp \
+	src/settings/global/UIGlobalSettingsInterface.cpp \
 	src/settings/machine/UIMachineSettingsAudio.cpp \
 	src/settings/machine/UIMachineSettingsDisplay.cpp \
Index: trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 89323)
+++ trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 89324)
@@ -1926,4 +1926,5 @@
         case GlobalSettingsPageType_Proxy:      strResult = "Proxy"; break;
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+        case GlobalSettingsPageType_Interface:  strResult = "Interface"; break;
         default:
         {
@@ -1951,4 +1952,5 @@
     keys << "Proxy";      values << GlobalSettingsPageType_Proxy;
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+    keys << "Interface";  values << GlobalSettingsPageType_Interface;
     /* Invalid type for unknown words: */
     if (!keys.contains(strGlobalSettingsPageType, Qt::CaseInsensitive))
@@ -1973,4 +1975,5 @@
         case GlobalSettingsPageType_Proxy:      return UIIconPool::pixmap(":/proxy_warning_16px.png");
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+        case GlobalSettingsPageType_Interface:  return UIIconPool::pixmap(":/interface_warning_16px.png");
         default: AssertMsgFailed(("No pixmap for %d", type)); break;
     }
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 89323)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 89324)
@@ -832,4 +832,5 @@
     GlobalSettingsPageType_Proxy,
 #endif
+    GlobalSettingsPageType_Interface,
     GlobalSettingsPageType_Max
 };
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 89323)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 89324)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2020 Oracle Corporation
+ * Copyright (C) 2006-2021 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -35,4 +35,7 @@
 #include "UIGlobalSettingsInput.h"
 #include "UIGlobalSettingsLanguage.h"
+#ifdef VBOX_WS_WIN
+# include "UIGlobalSettingsInterface.h"
+#endif
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
 # include "UIGlobalSettingsProxy.h"
@@ -104,4 +107,9 @@
 #endif
 
+#ifdef VBOX_WS_WIN
+    /* Interface page: */
+    m_pSelector->setItemText(GlobalSettingsPageType_Interface, tr("Interface"));
+#endif
+
     /* Polish the selector: */
     m_pSelector->polish();
@@ -242,4 +250,15 @@
                 }
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+#ifdef VBOX_WS_WIN
+                /* Interface page: */
+                case GlobalSettingsPageType_Interface:
+                {
+                    pSettingsPage = new UIGlobalSettingsInterface;
+                    addItem(":/interface_32px.png", ":/interface_24px.png", ":/interface_16px.png",
+                            iPageIndex, "#userInterface", pSettingsPage);
+                    addPageHelpKeyword(iPageIndex, "globalsettings");
+                    break;
+                }
+#endif /* VBOX_WS_WIN */
                 default:
                     break;
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.cpp	(revision 89324)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.cpp	(revision 89324)
@@ -0,0 +1,191 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIGlobalSettingsInterface class implementation.
+ */
+
+/*
+ * Copyright (C) 2008-2021 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+/* Qt includes: */
+#include <QGridLayout>
+#include <QLabel>
+
+/* GUI includes: */
+#include "UIColorThemeEditor.h"
+#include "UIExtraDataManager.h"
+#include "UIGlobalSettingsInterface.h"
+
+/** Global settings: User Interface page data structure. */
+struct UIDataSettingsGlobalInterface
+{
+    /** Constructs data. */
+    UIDataSettingsGlobalInterface()
+        : m_enmColorTheme(UIColorThemeType_Auto)
+    {}
+
+    /** Returns whether the @a other passed data is equal to this one. */
+    bool equal(const UIDataSettingsGlobalInterface &other) const
+    {
+        return    true
+               && (m_enmColorTheme == other.m_enmColorTheme)
+                  ;
+    }
+
+    /** Returns whether the @a other passed data is equal to this one. */
+    bool operator==(const UIDataSettingsGlobalInterface &other) const { return equal(other); }
+    /** Returns whether the @a other passed data is different from this one. */
+    bool operator!=(const UIDataSettingsGlobalInterface &other) const { return !equal(other); }
+
+    /** Holds the color-theme. */
+    UIColorThemeType  m_enmColorTheme;
+};
+
+
+/*********************************************************************************************************************************
+*   Class UIGlobalSettingsInterface implementation.                                                                              *
+*********************************************************************************************************************************/
+
+UIGlobalSettingsInterface::UIGlobalSettingsInterface()
+    : m_pCache(0)
+    , m_pLabelColorTheme(0)
+    , m_pEditorColorTheme(0)
+{
+    prepare();
+}
+
+UIGlobalSettingsInterface::~UIGlobalSettingsInterface()
+{
+    cleanup();
+}
+
+void UIGlobalSettingsInterface::loadToCacheFrom(QVariant &data)
+{
+    /* Fetch data to properties: */
+    UISettingsPageGlobal::fetchData(data);
+
+    /* Clear cache initially: */
+    m_pCache->clear();
+
+    /* Cache old data: */
+    UIDataSettingsGlobalInterface oldData;
+    oldData.m_enmColorTheme = gEDataManager->colorTheme();
+    m_pCache->cacheInitialData(oldData);
+
+    /* Upload properties to data: */
+    UISettingsPageGlobal::uploadData(data);
+}
+
+void UIGlobalSettingsInterface::getFromCache()
+{
+    /* Load old data from the cache: */
+    const UIDataSettingsGlobalInterface &oldData = m_pCache->base();
+    m_pEditorColorTheme->setValue(oldData.m_enmColorTheme);
+
+    /* Revalidate: */
+    revalidate();
+}
+
+void UIGlobalSettingsInterface::putToCache()
+{
+    /* Prepare new data: */
+    UIDataSettingsGlobalInterface newData;
+
+    /* Cache new data: */
+    newData.m_enmColorTheme = m_pEditorColorTheme->value();
+    m_pCache->cacheCurrentData(newData);
+}
+
+void UIGlobalSettingsInterface::saveFromCacheTo(QVariant &data)
+{
+    /* Fetch data to properties: */
+    UISettingsPageGlobal::fetchData(data);
+
+    /* Update data and failing state: */
+    setFailed(!saveData());
+
+    /* Upload properties to data: */
+    UISettingsPageGlobal::uploadData(data);
+}
+
+void UIGlobalSettingsInterface::retranslateUi()
+{
+    m_pLabelColorTheme->setText(tr("Color &Theme:"));
+    m_pEditorColorTheme->setWhatsThis(tr("Selects the color theme. It can be Light, Dark or automatically detected (default)."));
+}
+
+void UIGlobalSettingsInterface::prepare()
+{
+    /* Prepare cache: */
+    m_pCache = new UISettingsCacheGlobalInterface;
+    AssertPtrReturnVoid(m_pCache);
+
+    /* Prepare everything: */
+    prepareWidgets();
+
+    /* Apply language settings: */
+    retranslateUi();
+}
+
+void UIGlobalSettingsInterface::prepareWidgets()
+{
+    /* Prepare main layout: */
+    QGridLayout *pLayoutMain = new QGridLayout(this);
+    if (pLayoutMain)
+    {
+        pLayoutMain->setColumnStretch(1, 1);
+        pLayoutMain->setRowStretch(1, 1);
+
+        /* Prepare color-theme label: */
+        m_pLabelColorTheme = new QLabel(this);
+        if (m_pLabelColorTheme)
+        {
+            m_pLabelColorTheme->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+            pLayoutMain->addWidget(m_pLabelColorTheme, 0, 0);
+        }
+        /* Prepare color-theme editor: */
+        m_pEditorColorTheme = new UIColorThemeEditor(this);
+        if (m_pEditorColorTheme)
+        {
+            m_pLabelColorTheme->setBuddy(m_pEditorColorTheme->focusProxy());
+            pLayoutMain->addWidget(m_pEditorColorTheme, 0, 1);
+        }
+    }
+}
+
+void UIGlobalSettingsInterface::cleanup()
+{
+    /* Cleanup cache: */
+    delete m_pCache;
+    m_pCache = 0;
+}
+
+bool UIGlobalSettingsInterface::saveData()
+{
+    /* Prepare result: */
+    bool fSuccess = true;
+    /* Save settings from cache: */
+    if (   fSuccess
+        && m_pCache->wasChanged())
+    {
+        /* Get old data from cache: */
+        const UIDataSettingsGlobalInterface &oldData = m_pCache->base();
+        /* Get new data from cache: */
+        const UIDataSettingsGlobalInterface &newData = m_pCache->data();
+
+        /* Save 'color-theme': */
+        if (   fSuccess
+            && newData.m_enmColorTheme != oldData.m_enmColorTheme)
+            /* fSuccess = */ gEDataManager->setColorTheme(newData.m_enmColorTheme);
+    }
+    /* Return result: */
+    return fSuccess;
+}
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.h	(revision 89324)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsInterface.h	(revision 89324)
@@ -0,0 +1,88 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIGlobalSettingsInterface class declaration.
+ */
+
+/*
+ * Copyright (C) 2008-2021 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsInterface_h
+#define FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsInterface_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* GUI includes: */
+#include "UISettingsPage.h"
+
+/* Forward declarations: */
+class QLabel;
+class UIColorThemeEditor;
+struct UIDataSettingsGlobalInterface;
+typedef UISettingsCache<UIDataSettingsGlobalInterface> UISettingsCacheGlobalInterface;
+
+/** Global settings: User Interface page. */
+class SHARED_LIBRARY_STUFF UIGlobalSettingsInterface : public UISettingsPageGlobal
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs User Interface settings page. */
+    UIGlobalSettingsInterface();
+    /** Destructs User Interface settings page. */
+    virtual ~UIGlobalSettingsInterface() /* override */;
+
+protected:
+
+    /** Loads settings from external object(s) packed inside @a data to cache.
+      * @note  This task WILL be performed in other than the GUI thread, no widget interactions! */
+    virtual void loadToCacheFrom(QVariant &data) /* override */;
+    /** Loads data from cache to corresponding widgets.
+      * @note  This task WILL be performed in the GUI thread only, all widget interactions here! */
+    virtual void getFromCache() /* override */;
+
+    /** Saves data from corresponding widgets to cache.
+      * @note  This task WILL be performed in the GUI thread only, all widget interactions here! */
+    virtual void putToCache() /* override */;
+    /** Saves settings from cache to external object(s) packed inside @a data.
+      * @note  This task WILL be performed in other than the GUI thread, no widget interactions! */
+    virtual void saveFromCacheTo(QVariant &data) /* overrride */;
+
+    /** Handles translation event. */
+    virtual void retranslateUi() /* override */;
+
+private:
+
+    /** Prepares all. */
+    void prepare();
+    /** Prepares widgets. */
+    void prepareWidgets();
+    /** Cleanups all. */
+    void cleanup();
+
+    /** Saves existing data from cache. */
+    bool saveData();
+
+    /** Holds the page data cache instance. */
+    UISettingsCacheGlobalInterface *m_pCache;
+
+    /** @name Widgets
+     * @{ */
+        /** Holds the color theme label instance. */
+        QLabel             *m_pLabelColorTheme;
+        /** Holds the color theme label instance. */
+        UIColorThemeEditor *m_pEditorColorTheme;
+    /** @} */
+};
+
+#endif /* !FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsInterface_h */
