diff --git a/CHANGELOG.md b/CHANGELOG.md
index f84cf3360..ea1939fbb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -129,6 +129,7 @@
- Dev: Fixed some compiler warnings. (#5672)
- Dev: Unified parsing of historic and live IRC messages. (#5678)
- Dev: 7TV's `entitlement.reset` is now explicitly ignored. (#5685)
+- Dev: Qt 6.8 and later now default to the GDI fontengine. (#5710)
## 2.5.1
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37c8835b8..c3f57d474 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,6 +32,7 @@ option(BUILD_TRANSLATIONS "" OFF)
option(BUILD_SHARED_LIBS "" OFF)
option(CHATTERINO_LTO "Enable LTO for all targets" OFF)
option(CHATTERINO_PLUGINS "Enable ALPHA plugin support in Chatterino" OFF)
+option(CHATTERINO_USE_GDI_FONTENGINE "Use the legacy GDI fontengine instead of the new DirectWrite one on Windows (Qt 6.8.0 and later)" ON)
option(CHATTERINO_UPDATER "Enable update checks" ON)
mark_as_advanced(CHATTERINO_UPDATER)
diff --git a/cmake/resources/generate_resources.cmake b/cmake/resources/generate_resources.cmake
index 0bd28a80e..df227a7d6 100644
--- a/cmake/resources/generate_resources.cmake
+++ b/cmake/resources/generate_resources.cmake
@@ -88,6 +88,15 @@ if (WIN32)
list(APPEND RES_AUTOGEN_FILES "${CMAKE_BINARY_DIR}/autogen/windows.rc")
endif ()
+set(WINDOWS_ARGUMENTS "@Invalid()") # empty QVariant() in QSettings
+if (CHATTERINO_USE_GDI_FONTENGINE AND Qt${MAJOR_QT_VERSION}_VERSION VERSION_GREATER_EQUAL "6.8.0")
+ message(STATUS "Using legacy GDI fontengine")
+ set(WINDOWS_ARGUMENTS "fontengine=gdi")
+endif ()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/qt.conf.in" "${CMAKE_SOURCE_DIR}/resources/qt.conf")
+list(APPEND RES_AUTOGEN_FILES "${CMAKE_SOURCE_DIR}/resources/qt.conf")
+
list(APPEND RES_AUTOGEN_FILES
"${CMAKE_SOURCE_DIR}/resources/resources_autogenerated.qrc"
"${CMAKE_BINARY_DIR}/autogen/ResourcesAutogen.cpp"
diff --git a/cmake/resources/qt.conf.in b/cmake/resources/qt.conf.in
new file mode 100644
index 000000000..4706fdcc4
--- /dev/null
+++ b/cmake/resources/qt.conf.in
@@ -0,0 +1,2 @@
+[Platforms]
+WindowsArguments = ${WINDOWS_ARGUMENTS}
diff --git a/cmake/resources/resources_autogenerated.qrc.in b/cmake/resources/resources_autogenerated.qrc.in
index cce67fae9..9e28de4a6 100644
--- a/cmake/resources/resources_autogenerated.qrc.in
+++ b/cmake/resources/resources_autogenerated.qrc.in
@@ -6,4 +6,7 @@
@RES_RESOURCES_CONTENT@
+
+ qt.conf
+
\ No newline at end of file
diff --git a/resources/.gitignore b/resources/.gitignore
index 1d38bf357..5402f76fb 100644
--- a/resources/.gitignore
+++ b/resources/.gitignore
@@ -1 +1,2 @@
linuxinstall
+/qt.conf
diff --git a/resources/qt.conf b/resources/qt.conf
deleted file mode 100644
index 310dd86ab..000000000
--- a/resources/qt.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-[Platforms]
-WindowArguments = dpiawareness=2
diff --git a/resources/resources.qrc b/resources/resources.qrc
deleted file mode 100644
index 8568b5032..000000000
--- a/resources/resources.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- qt.conf
-
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 631239533..04b863c79 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -740,8 +740,6 @@ set(SOURCE_FILES
widgets/splits/SplitInput.hpp
widgets/splits/SplitOverlay.cpp
widgets/splits/SplitOverlay.hpp
-
- ${CMAKE_SOURCE_DIR}/resources/resources.qrc
)
if (APPLE)