diff --git a/rpcs3/rpcs3qt/gui_application.cpp b/rpcs3/rpcs3qt/gui_application.cpp
index 2b39a5d4d7..4158e37813 100644
--- a/rpcs3/rpcs3qt/gui_application.cpp
+++ b/rpcs3/rpcs3qt/gui_application.cpp
@@ -447,10 +447,9 @@ void gui_application::StopPlaytime()
 }
 
 /*
-* Handle a request to change the stylesheet. May consider adding reporting of errors in future.
-* Empty string means default.
+* Handle a request to change the stylesheet based on the current entry in the settings.
 */
-void gui_application::OnChangeStyleSheetRequest(const QString& path)
+void gui_application::OnChangeStyleSheetRequest()
 {
 	// skip stylesheets on first repaint if a style was set from command line
 	if (m_use_cli_style && gui::stylesheet.isEmpty())
@@ -465,59 +464,71 @@ void gui_application::OnChangeStyleSheetRequest(const QString& path)
 		return;
 	}
 
-	QFile file(path);
+	const QString stylesheet = m_gui_settings->GetValue(gui::m_currentStylesheet).toString();
 
-	// If we can't open the file, try the /share or /Resources folder
-#if !defined(_WIN32)
-#ifdef __APPLE__
-	QString share_dir = QCoreApplication::applicationDirPath() + "/../Resources/";
-#else
-	QString share_dir = QCoreApplication::applicationDirPath() + "/../share/rpcs3/";
-#endif
-	QFile share_file(share_dir + "GuiConfigs/" + QFileInfo(file.fileName()).fileName());
-#endif
-
-	if (path == "")
+	if (stylesheet.isEmpty() || stylesheet == gui::Default)
 	{
 		setStyleSheet(gui::stylesheets::default_style_sheet);
 	}
-	else if (path == "-")
+	else if (stylesheet == gui::None)
 	{
 		setStyleSheet("/* none */");
 	}
-	else if (file.open(QIODevice::ReadOnly | QIODevice::Text))
-	{
-		QString config_dir = qstr(fs::get_config_dir());
-
-		// Remove old fonts
-		QFontDatabase::removeAllApplicationFonts();
-
-		// Add PS3 fonts
-		QDirIterator ps3_font_it(qstr(g_cfg.vfs.get_dev_flash() + "data/font/"), QStringList() << "*.ttf", QDir::Files, QDirIterator::Subdirectories);
-		while (ps3_font_it.hasNext())
-			QFontDatabase::addApplicationFont(ps3_font_it.next());
-
-		// Add custom fonts
-		QDirIterator custom_font_it(config_dir + "fonts/", QStringList() << "*.ttf", QDir::Files, QDirIterator::Subdirectories);
-		while (custom_font_it.hasNext())
-			QFontDatabase::addApplicationFont(custom_font_it.next());
-
-		// Set root for stylesheets
-		QDir::setCurrent(config_dir);
-		setStyleSheet(file.readAll());
-		file.close();
-	}
-#if !defined(_WIN32)
-	else if (share_file.open(QIODevice::ReadOnly | QIODevice::Text))
-	{
-		QDir::setCurrent(share_dir);
-		setStyleSheet(share_file.readAll());
-		share_file.close();
-	}
-#endif
 	else
 	{
-		setStyleSheet(gui::stylesheets::default_style_sheet);
+		QString stylesheet_path;
+		QString stylesheet_dir;
+		QList<QDir> locs;
+		locs << m_gui_settings->GetSettingsDir();
+
+#if !defined(_WIN32)
+#ifdef __APPLE__
+		locs << QCoreApplication::applicationDirPath() + "/../Resources/GuiConfigs/";
+#else
+		locs << QCoreApplication::applicationDirPath() + "/../share/rpcs3/GuiConfigs/";
+#endif
+		locs << QCoreApplication::applicationDirPath() + "/GuiConfigs/";
+#endif
+
+		for (auto&& loc : locs)
+		{
+			QFileInfo file_info(loc.absoluteFilePath(stylesheet + QStringLiteral(".qss")));
+			if (file_info.exists())
+			{
+				loc.cdUp();
+				stylesheet_dir  = loc.absolutePath();
+				stylesheet_path = file_info.absoluteFilePath();
+				break;
+			}
+		}
+
+		if (QFile file(stylesheet_path); !stylesheet_path.isEmpty() && file.open(QIODevice::ReadOnly | QIODevice::Text))
+		{
+			const QString config_dir = qstr(fs::get_config_dir());
+
+			// Remove old fonts
+			QFontDatabase::removeAllApplicationFonts();
+
+			// Add PS3 fonts
+			QDirIterator ps3_font_it(qstr(g_cfg.vfs.get_dev_flash() + "data/font/"), QStringList() << "*.ttf", QDir::Files, QDirIterator::Subdirectories);
+			while (ps3_font_it.hasNext())
+				QFontDatabase::addApplicationFont(ps3_font_it.next());
+
+			// Add custom fonts
+			QDirIterator custom_font_it(config_dir + "fonts/", QStringList() << "*.ttf", QDir::Files, QDirIterator::Subdirectories);
+			while (custom_font_it.hasNext())
+				QFontDatabase::addApplicationFont(custom_font_it.next());
+
+			// Set root for stylesheets
+			QDir::setCurrent(stylesheet_dir);
+			setStyleSheet(file.readAll());
+			file.close();
+		}
+		else
+		{
+			gui_log.error("Could not find stylesheet '%s'. Using default.", stylesheet.toStdString());
+			setStyleSheet(gui::stylesheets::default_style_sheet);
+		}
 	}
 
 	gui::stylesheet = styleSheet();
diff --git a/rpcs3/rpcs3qt/gui_application.h b/rpcs3/rpcs3qt/gui_application.h
index 4216717fe1..cdcaaa8ce4 100644
--- a/rpcs3/rpcs3qt/gui_application.h
+++ b/rpcs3/rpcs3qt/gui_application.h
@@ -77,7 +77,7 @@ private:
 	bool m_use_cli_style = false;
 
 private Q_SLOTS:
-	void OnChangeStyleSheetRequest(const QString& path);
+	void OnChangeStyleSheetRequest();
 	void OnEmuSettingsChange();
 
 Q_SIGNALS:
diff --git a/rpcs3/rpcs3qt/gui_settings.cpp b/rpcs3/rpcs3qt/gui_settings.cpp
index 2b3da8d6f0..c4997487d3 100644
--- a/rpcs3/rpcs3qt/gui_settings.cpp
+++ b/rpcs3/rpcs3qt/gui_settings.cpp
@@ -4,8 +4,6 @@
 #include "localized.h"
 
 #include "Emu/System.h"
-#include "Utilities/File.h"
-#include "Utilities/StrUtil.h"
 
 #include <QCheckBox>
 #include <QCoreApplication>
@@ -344,56 +342,6 @@ QStringList gui_settings::GetStylesheetEntries()
 	return res;
 }
 
-QString gui_settings::GetCurrentStylesheetPath()
-{
-	const Localized localized;
-
-	const QString stylesheet = GetValue(gui::m_currentStylesheet).toString();
-
-	if (stylesheet == gui::Default)
-	{
-		return "";
-	}
-	else if (stylesheet == gui::None)
-	{
-		return "-";
-	}
-
-	QList<QDir> locs;
-	locs += m_settings_dir;
-
-#if !defined(_WIN32)
-#ifdef __APPLE__
-	QDir platformStylesheetDir = QCoreApplication::applicationDirPath() + "/../Resources/GuiConfigs/";
-#else
-	QDir platformStylesheetDir = QCoreApplication::applicationDirPath() + "/../share/rpcs3/GuiConfigs/";
-#endif
-	QDir appDir = QCoreApplication::applicationDirPath() + "/GuiConfigs/";
-	locs += platformStylesheetDir;
-	locs += appDir;
-#endif
-
-	for (auto&& dir : locs)
-	{
-		QString path = dir.absoluteFilePath(stylesheet + ".qss");
-		QFile test(path);
-		if (test.exists())
-		{
-			test.open(QIODevice::ReadOnly);
-			std::string result = fs::get_cache_dir() + "temp.qss";
-			std::string sheet = test.readAll().toStdString();
-
-			// Fixup paths (replace resources in GuiConfigs with absolute paths) and store in temp file.
-			path.truncate(path.size() - stylesheet.size() - 4);
-			fs::write_file(result, fs::rewrite, fmt::replace_all(sheet, "url(\"GuiConfigs/", "url(\"" + path.toStdString()));
-
-			return QString::fromUtf8(result.data(), result.size());
-		}
-	}
-
-	return "";
-}
-
 QSize gui_settings::SizeFromSlider(int pos)
 {
 	return gui::gl_icon_size_min + (gui::gl_icon_size_max - gui::gl_icon_size_min) * (1.f * pos / gui::gl_max_slider_pos);
diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h
index 3f7237873c..a014d62da1 100644
--- a/rpcs3/rpcs3qt/gui_settings.h
+++ b/rpcs3/rpcs3qt/gui_settings.h
@@ -253,7 +253,6 @@ public:
 	bool GetGamelistColVisibility(int col);
 	QColor GetCustomColor(int col);
 	QStringList GetConfigEntries();
-	QString GetCurrentStylesheetPath();
 	QStringList GetStylesheetEntries();
 	QStringList GetGameListCategoryFilters();
 
diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp
index 021af237c6..04dd1196a4 100644
--- a/rpcs3/rpcs3qt/main_window.cpp
+++ b/rpcs3/rpcs3qt/main_window.cpp
@@ -99,7 +99,7 @@ bool main_window::Init()
 	setMinimumSize(350, minimumSizeHint().height());    // seems fine on win 10
 	setWindowTitle(QString::fromStdString("RPCS3 " + rpcs3::get_version().to_string()));
 
-	Q_EMIT RequestGlobalStylesheetChange(m_gui_settings->GetCurrentStylesheetPath());
+	Q_EMIT RequestGlobalStylesheetChange();
 	ConfigureGuiFromSettings(true);
 
 	if (const std::string_view branch_name = rpcs3::get_full_branch(); branch_name != "RPCS3/rpcs3/master" && branch_name != "local_build")
diff --git a/rpcs3/rpcs3qt/main_window.h b/rpcs3/rpcs3qt/main_window.h
index 13323a9ddf..1ca8c58c0c 100644
--- a/rpcs3/rpcs3qt/main_window.h
+++ b/rpcs3/rpcs3qt/main_window.h
@@ -87,7 +87,7 @@ public:
 
 Q_SIGNALS:
 	void RequestLanguageChange(const QString& language);
-	void RequestGlobalStylesheetChange(const QString& stylesheet_path);
+	void RequestGlobalStylesheetChange();
 	void RequestTrophyManagerRepaint();
 	void NotifyEmuSettingsChange();
 
diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp
index cc94991a95..cd0f9a0bd2 100644
--- a/rpcs3/rpcs3qt/settings_dialog.cpp
+++ b/rpcs3/rpcs3qt/settings_dialog.cpp
@@ -1926,7 +1926,7 @@ void settings_dialog::OnApplyStylesheet()
 {
 	m_current_stylesheet = ui->combo_stylesheets->currentData().toString();
 	m_gui_settings->SetValue(gui::m_currentStylesheet, m_current_stylesheet);
-	Q_EMIT GuiStylesheetRequest(m_gui_settings->GetCurrentStylesheetPath());
+	Q_EMIT GuiStylesheetRequest();
 }
 
 int settings_dialog::exec()
diff --git a/rpcs3/rpcs3qt/settings_dialog.h b/rpcs3/rpcs3qt/settings_dialog.h
index 816c173b81..d2a1eeeb98 100644
--- a/rpcs3/rpcs3qt/settings_dialog.h
+++ b/rpcs3/rpcs3qt/settings_dialog.h
@@ -26,7 +26,7 @@ public:
 	int exec() override;
 Q_SIGNALS:
 	void GuiSettingsSyncRequest(bool configure_all);
-	void GuiStylesheetRequest(const QString& path);
+	void GuiStylesheetRequest();
 	void GuiSettingsSaveRequest();
 	void GuiRepaintRequest();
 	void EmuSettingsApplied();