diff --git a/code/Sun.rc b/code/Sun.rc
index f0c05960..359ca35c 100644
--- a/code/Sun.rc
+++ b/code/Sun.rc
@@ -117,7 +117,7 @@ END
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
-IDI_SUN ICON DISCARDABLE "sun.ico"
+IDI_SUN ICON DISCARDABLE "resources/app-icon/opents.ico"
IDI_CHECKED ICON DISCARDABLE "checked.ico"
IDI_UNCHECKED ICON DISCARDABLE "unchecked.ico"
IDI_GREYED ICON DISCARDABLE "greyed.ico"
diff --git a/code/resources/app-icon/build-ico.sh b/code/resources/app-icon/build-ico.sh
new file mode 100755
index 00000000..63aae8ff
--- /dev/null
+++ b/code/resources/app-icon/build-ico.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+icon_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
+
+if ! command -v magick >/dev/null 2>&1; then
+ echo "Error: ImageMagick 'magick' was not found." >&2
+ exit 1
+fi
+
+magick \
+ \( -background none "$icon_dir/opents.svg" -resize 256x256 \) \
+ \( -background none "$icon_dir/opents.svg" -resize 128x128 \) \
+ \( -background none "$icon_dir/opents.svg" -resize 64x64 \) \
+ \( -background none "$icon_dir/opents.svg" -resize 48x48 \) \
+ \( -background none "$icon_dir/opents-flat.svg" -resize 32x32 \) \
+ \( -background none "$icon_dir/opents-flat.svg" -resize 24x24 \) \
+ \( -background none "$icon_dir/opents-flat.svg" -resize 16x16 \) \
+ "$icon_dir/opents.ico"
+
+echo "Created $icon_dir/opents.ico"
diff --git a/code/resources/app-icon/opents-flat.svg b/code/resources/app-icon/opents-flat.svg
new file mode 100644
index 00000000..bb9c295a
--- /dev/null
+++ b/code/resources/app-icon/opents-flat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/code/resources/app-icon/opents.ico b/code/resources/app-icon/opents.ico
new file mode 100644
index 00000000..1bd42391
Binary files /dev/null and b/code/resources/app-icon/opents.ico differ
diff --git a/code/resources/app-icon/opents.svg b/code/resources/app-icon/opents.svg
new file mode 100644
index 00000000..befb189d
--- /dev/null
+++ b/code/resources/app-icon/opents.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/code/sun.ico b/code/sun.ico
deleted file mode 100644
index d386cda9..00000000
Binary files a/code/sun.ico and /dev/null differ