diff --git a/DarkUI/DarkUI.WPF/Converters/HtmlToUIColorConverter.cs b/DarkUI/DarkUI.WPF/Converters/HtmlToUIColorConverter.cs
new file mode 100644
index 0000000000..34bfd05355
--- /dev/null
+++ b/DarkUI/DarkUI.WPF/Converters/HtmlToUIColorConverter.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Drawing;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace DarkUI.WPF.Converters;
+
+public class HtmlToUIColorConverter : IValueConverter
+{
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var colString = (string)value;
+ var col = ColorTranslator.FromHtml(colString);
+ return System.Windows.Media.Color.FromArgb(col.A, col.R, col.G, col.B);
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var col = (System.Windows.Media.Color)value;
+ return ColorTranslator.ToHtml(Color.FromArgb(col.A, col.R, col.G, col.B));
+ }
+}
diff --git a/DarkUI/DarkUI.WPF/Converters/VectorToBrushConverter.cs b/DarkUI/DarkUI.WPF/Converters/VectorToBrushConverter.cs
new file mode 100644
index 0000000000..ec9b768123
--- /dev/null
+++ b/DarkUI/DarkUI.WPF/Converters/VectorToBrushConverter.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Globalization;
+using System.Numerics;
+using System.Windows.Data;
+using System.Windows.Media;
+
+namespace DarkUI.WPF.Converters;
+
+public class VectorToBrushConverter : IValueConverter
+{
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var vec = (Vector4)value;
+ byte r = (byte)(Math.Clamp(vec.X, 0.0f, 1.0f) * 255.0f);
+ byte g = (byte)(Math.Clamp(vec.Y, 0.0f, 1.0f) * 255.0f);
+ byte b = (byte)(Math.Clamp(vec.Z, 0.0f, 1.0f) * 255.0f);
+ byte a = (byte)(Math.Clamp(vec.W, 0.0f, 1.0f) * 255.0f);
+
+ return new SolidColorBrush(Color.FromArgb(a, r, g, b));
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ Color col = ((SolidColorBrush)value).Color;
+ return new Vector4(col.R / 255.0f, col.G / 255.0f, col.B / 255.0f, col.A / 255.0f);
+ }
+}
diff --git a/DarkUI/DarkUI.WPF/Converters/VectorToUIColorConverter.cs b/DarkUI/DarkUI.WPF/Converters/VectorToUIColorConverter.cs
new file mode 100644
index 0000000000..4359d20679
--- /dev/null
+++ b/DarkUI/DarkUI.WPF/Converters/VectorToUIColorConverter.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Globalization;
+using System.Numerics;
+using System.Windows.Data;
+using System.Windows.Media;
+
+namespace DarkUI.WPF.Converters;
+
+public class VectorToUIColorConverter : IValueConverter
+{
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var vec = (Vector4)value;
+ byte r = (byte)(Math.Clamp(vec.X, 0.0f, 1.0f) * 255.0f);
+ byte g = (byte)(Math.Clamp(vec.Y, 0.0f, 1.0f) * 255.0f);
+ byte b = (byte)(Math.Clamp(vec.Z, 0.0f, 1.0f) * 255.0f);
+ byte a = (byte)(Math.Clamp(vec.W, 0.0f, 1.0f) * 255.0f);
+ return Color.FromArgb(a, r, g, b);
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var col = (Color)value;
+ return new Vector4(col.R / 255.0f, col.G / 255.0f, col.B / 255.0f, col.A / 255.0f);
+ }
+}
diff --git a/DarkUI/DarkUI.WPF/DarkUI.WPF.csproj b/DarkUI/DarkUI.WPF/DarkUI.WPF.csproj
index 054b6f2730..14535c8bf4 100644
--- a/DarkUI/DarkUI.WPF/DarkUI.WPF.csproj
+++ b/DarkUI/DarkUI.WPF/DarkUI.WPF.csproj
@@ -34,6 +34,10 @@
+
+
+
+
diff --git a/DarkUI/DarkUI.WPF/Dictionaries/BlackColors.xaml b/DarkUI/DarkUI.WPF/Dictionaries/BlackColors.xaml
index 9fd8a7550e..d7f076dbc6 100644
--- a/DarkUI/DarkUI.WPF/Dictionaries/BlackColors.xaml
+++ b/DarkUI/DarkUI.WPF/Dictionaries/BlackColors.xaml
@@ -32,6 +32,7 @@
0.5
0.25
0.5
+ 1.0
0.3
3
diff --git a/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml b/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml
index 542f15f518..3c85524c27 100644
--- a/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml
+++ b/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml
@@ -1,4 +1,5 @@
@@ -34,6 +35,7 @@
0.5
0.25
0.5
+ 1.0
0.3
3
diff --git a/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml.cs b/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml.cs
new file mode 100644
index 0000000000..2f804e145e
--- /dev/null
+++ b/DarkUI/DarkUI.WPF/Dictionaries/DarkColors.xaml.cs
@@ -0,0 +1,47 @@
+using DarkUI.Config;
+
+using System.Windows;
+
+namespace DarkUI.WPF.Dictionaries;
+
+public partial class DarkColors : ResourceDictionary
+{
+ public DarkColors()
+ {
+ InitializeComponent();
+
+ if (!Colors.HasBrightnessChanged)
+ return;
+
+ ApplyDarkUiColors();
+ }
+
+ private void ApplyDarkUiColors()
+ {
+ // Keep the XAML palette as the fallback and overwrite it only when DarkUI brightness has changed.
+ SetColor("Color_Text", Colors.LightText);
+ SetColor("Color_Background", Colors.GreyBackground);
+ SetColor("Color_Background_Alternative", Colors.HeaderBackground);
+ SetColor("Color_Background_Control", Colors.LightBackground);
+ SetColor("Color_Background_Defaulted", Colors.DarkBlueBackground);
+ SetColor("Color_Background_Disabled", Colors.DarkGreySelection);
+ SetColor("Color_Background_High", Colors.LighterBackground);
+ SetColor("Color_Background_Low", Colors.MediumBackground);
+
+ SetColor("Color_Border", Colors.GreySelection);
+ SetColor("Color_Border_High", Colors.LightestBackground);
+ SetColor("Color_Border_Low", Colors.MediumBackground);
+
+ SetColor("Color_Highlight", Colors.BlueHighlight);
+ SetColor("Color_Selection", Colors.BlueSelection);
+ SetColor("Color_Selection_LostFocus", Colors.GreySelection);
+ SetColor("Color_WindowBorder", Colors.BlueBackground);
+
+ this["Opacity_Icon"] = (double)Colors.Brightness;
+ }
+
+ private void SetColor(string key, System.Drawing.Color color)
+ {
+ this[key] = System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
+ }
+}
diff --git a/DarkUI/DarkUI.WPF/Dictionaries/LightColors.xaml b/DarkUI/DarkUI.WPF/Dictionaries/LightColors.xaml
index b6e6eaa2f6..455ae2fa91 100644
--- a/DarkUI/DarkUI.WPF/Dictionaries/LightColors.xaml
+++ b/DarkUI/DarkUI.WPF/Dictionaries/LightColors.xaml
@@ -32,6 +32,7 @@
0.25
0.2
0.5
+ 1.0
0.3
3
diff --git a/DarkUI/DarkUI.WPF/Styles/ColorPickerButton.xaml b/DarkUI/DarkUI.WPF/Styles/ColorPickerButton.xaml
index 2ff27cde8a..da77e83f0b 100644
--- a/DarkUI/DarkUI.WPF/Styles/ColorPickerButton.xaml
+++ b/DarkUI/DarkUI.WPF/Styles/ColorPickerButton.xaml
@@ -17,7 +17,7 @@
-
+
diff --git a/DarkUI/DarkUI.WPF/Styles/Icon.xaml b/DarkUI/DarkUI.WPF/Styles/Icon.xaml
index 1938c78b32..23dcc9ed4d 100644
--- a/DarkUI/DarkUI.WPF/Styles/Icon.xaml
+++ b/DarkUI/DarkUI.WPF/Styles/Icon.xaml
@@ -7,6 +7,7 @@