diff --git a/data_from_portwine/locales/PortProton.pot b/data_from_portwine/locales/PortProton.pot
index e640d6aa..eca24eed 100644
--- a/data_from_portwine/locales/PortProton.pot
+++ b/data_from_portwine/locales/PortProton.pot
@@ -1256,6 +1256,10 @@ msgid   "Force use sdl videodriver x11, works with BACKEND SDL. (Default is "
         "wayland)"
 msgstr  ""
 
+msgid   "If specified, sets a base output height to linearly scale the cursor "
+        "against."
+msgstr  ""
+
 msgid   "Change settings gamescope for"
 msgstr  ""
 
diff --git a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
index 57613f30..cbecdcc0 100644
--- a/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
+++ b/data_from_portwine/locales/es/LC_MESSAGES/PortProton.po
@@ -1636,6 +1636,12 @@ msgstr ""
 "Forzar el uso del controlador de video SDL x11, funciona con el backend SDL. "
 "(Por defecto es Wayland)."
 
+msgid ""
+"If specified, sets a base output height to linearly scale the cursor against."
+msgstr ""
+"Si se especifica, establece una altura de salida base para escalar "
+"linealmente el cursor."
+
 msgid "Change settings gamescope for"
 msgstr "Cambiar ajustes gamescope para"
 
diff --git a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
index 4b87b7e0..446622d2 100644
--- a/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
+++ b/data_from_portwine/locales/ru/LC_MESSAGES/PortProton.po
@@ -1615,6 +1615,12 @@ msgstr ""
 "запуском), работает вместе с SDL BACKEND (используется по умолчанию в "
 "Wayland сессии)"
 
+msgid ""
+"If specified, sets a base output height to linearly scale the cursor against."
+msgstr ""
+"Если указано, устанавливает базовую высоту вывода для линейного "
+"масштабирования курсора."
+
 msgid "Change settings gamescope for"
 msgstr "Изменить настройки Gamescope для"
 
diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper
index 3d893f72..fa992e49 100755
--- a/data_from_portwine/scripts/functions_helper
+++ b/data_from_portwine/scripts/functions_helper
@@ -3874,7 +3874,8 @@ start_portwine () {
         fi
     fi
 
-    # GAMESCOPE enable:
+    unset PW_GAMESCOPE_ARGS_NEW PW_GAMESCOPE_VARIABLES_BEFORE PW_GAMESCOPE_VARIABLES_AFTER
+    # GAMESCOPE fixes:
     if [[ "${PW_GAMESCOPE}" == "1" && "${GAMESCOPE_INSTALLED}" == "1" ]] \
     || check_gamescope_session
     then
@@ -3890,7 +3891,12 @@ start_portwine () {
         if [[ -d /sys/bus/pci/drivers/i915 ]] ; then
             export INTEL_DEBUG="norbc"
         fi
+        if [[ -d /sys/bus/pci/drivers/nvidia ]] ; then
+            PW_GAMESCOPE_VARIABLES_BEFORE+="__GL_THREADED_OPTIMIZATIONS=0 "
+            PW_GAMESCOPE_VARIABLES_AFTER+="__GL_THREADED_OPTIMIZATIONS=1 "
+        fi
     fi
+    # GAMESCOPE enable:
     if [[ "${PW_GAMESCOPE}" == "1" && "${GAMESCOPE_INSTALLED}" == "1" ]] \
     && ! check_gamescope_session
     then
@@ -3903,7 +3909,6 @@ start_portwine () {
         fi
 
         #checkbox
-        unset PW_GAMESCOPE_ARGS_NEW
         [[ "${PW_GS_FULLSCREEN}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" -f"
         [[ "${PW_GS_FORCE_FULLSCREEN}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --force-windows-fullscreen"
         [[ "${PW_GS_BORDERLESS_WINDOW}" == "1" ]] &&  PW_GAMESCOPE_ARGS_NEW+=" -b"
@@ -3933,6 +3938,7 @@ start_portwine () {
 
         [[ "${PW_GS_BACKEND_SDL}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --backend sdl"
         [[ "${PW_GS_SDL_VIDEODRIVER_X11}" == "1" ]] && export SDL_VIDEODRIVER="x11"
+        [[ "${PW_GS_CURSOR_SCALE_HEIGHT}" == "1" ]] && PW_GAMESCOPE_ARGS_NEW+=" --cursor-scale-height 1"
 
         #combobox
         if [[ "${PW_GS_SHOW_RESOLUTION}" != "disabled" ]] ; then
@@ -3975,7 +3981,7 @@ start_portwine () {
         [[ "${PW_GS_ITM_TARGET_NITS}" != "0" ]] && PW_GAMESCOPE_ARGS_NEW+=" --hdr-itm-target-nits ${PW_GS_ITM_TARGET_NITS}"
 
         edit_db_from_gui PW_GAMESCOPE_ARGS_NEW
-        export PW_RUN_GAMESCOPE="gamescope${PW_ID_VIDEO}${PW_GAMESCOPE_ARGS_NEW} --"
+        export PW_RUN_GAMESCOPE="${PW_GAMESCOPE_VARIABLES_BEFORE}gamescope${PW_ID_VIDEO}${PW_GAMESCOPE_ARGS_NEW} env ${PW_GAMESCOPE_VARIABLES_AFTER}"
     fi
 
     pw_mangohud_check
@@ -5440,16 +5446,19 @@ gui_gamescope () {
     PW_GS_EXPOSE_WAYLAND PW_GS_REALTIME_SCHEDULING
     )
 
-    grep -e '--mangoapp' "${PW_TMPFS_PATH}/gamescope.tmp" &>/dev/null && add_to_array "PW_GS_LIST" PW_GS_MANGOAPP
-    grep -e '--backend' "${PW_TMPFS_PATH}/gamescope.tmp" &>/dev/null && add_to_array "PW_GS_LIST" PW_GS_BACKEND_SDL PW_GS_SDL_VIDEODRIVER_X11
+    [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--mangoapp' ]] && add_to_array "PW_GS_LIST" PW_GS_MANGOAPP
+    [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--backend' ]] && add_to_array "PW_GS_LIST" PW_GS_BACKEND_SDL
+    check_wayland_session && add_to_array "PW_GS_LIST" PW_GS_SDL_VIDEODRIVER_X11
+    [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '--cursor-scale-height' ]] && add_to_array "PW_GS_LIST" PW_GS_CURSOR_SCALE_HEIGHT
 
-    GS_FILTER_CB="linear!nearest!fsr!nis!pixel"
     #debian bookworm fix
-    if grep -e '-U, --fsr-upscaling' "${PW_TMPFS_PATH}/gamescope.tmp" &>/dev/null ; then
+    if [[ $(<"${PW_TMPFS_PATH}/gamescope.tmp") =~ '-U, --fsr-upscaling' ]] ; then
         GS_FILTER_CB="fsr!nis"
         export PW_GS_FILTER_MODE_OLD="true"
         rm_from_array "PW_GS_LIST" PW_GS_FORCE_GRAB_CURSOR PW_GS_FORCE_GRAB_KEYBOARD PW_GS_HDR_ENABLE PW_GS_HDR_FORCE_SUPPORT \
         PW_GS_HDR_FORCE_OUTPUT
+    else
+        GS_FILTER_CB="linear!nearest!fsr!nis!pixel"
     fi
 
     PW_GS_FULLSCREEN_INFO=${translations[Make the window fullscreen]}
@@ -5470,6 +5479,7 @@ gui_gamescope () {
     PW_GS_MANGOAPP_INFO=${translations[Launch with the mangoapp (mangohud) performance overlay enabled. You should use this instead of using mangohud on the game or gamescope.]}
     PW_GS_BACKEND_SDL_INFO=${translations[Use sdl backend. (by default wayland backend is used).]}
     PW_GS_SDL_VIDEODRIVER_X11_INFO=${translations[Force use sdl videodriver x11, works with BACKEND SDL. (Default is wayland)]}
+    PW_GS_CURSOR_SCALE_HEIGHT_INFO=${translations[if specified, sets a base output height to linearly scale the cursor against.]}
 
     unset ADD_CHK_BOX_GS
     if [[ "${GAMESCOPE_INSTALLED}" == 1 ]] ; then
diff --git a/data_from_portwine/scripts/var b/data_from_portwine/scripts/var
index 74e9fba4..e5de3ae8 100755
--- a/data_from_portwine/scripts/var
+++ b/data_from_portwine/scripts/var
@@ -131,6 +131,7 @@ export PW_GS_REALTIME_SCHEDULING="0"
 export PW_GS_BACKEND_SDL="0"
 export PW_GS_SDL_VIDEODRIVER_X11="0"
 export PW_GS_MANGOAPP="0"
+export PW_GS_CURSOR_SCALE_HEIGHT="0"
 ###PREFIX_VERSION###
 export DOTPFX_VER="48v7"
 export DEFPFX_VER="v1"