diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h
index bb49f07f1c..7d55299ac0 100644
--- a/gfx/video_shader_parse.h
+++ b/gfx/video_shader_parse.h
@@ -142,7 +142,11 @@ struct video_shader
 {
    char prefix[64];
    char path[PATH_MAX_LENGTH];
+
    bool modern; /* Only used for XML shaders. */
+   /* indicative of whether shader was modified - 
+    * for instance from the menus */
+   bool modified;
 
    unsigned passes;
    unsigned luts;
@@ -154,9 +158,7 @@ struct video_shader
    int history_size;
 
    struct video_shader_pass pass[GFX_MAX_SHADERS];
-
    struct video_shader_lut lut[GFX_MAX_TEXTURES];
-
    struct video_shader_parameter parameters[GFX_MAX_PARAMETERS];
 };
 
diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c
index 1cdf136621..09d06d29b1 100644
--- a/menu/cbs/menu_cbs_left.c
+++ b/menu/cbs/menu_cbs_left.c
@@ -85,7 +85,7 @@ static int shader_action_parameter_left_internal(unsigned type, const char *labe
 
    param_menu->current = param_prev->current;
 
-   menu_shader_set_modified(true);
+   shader->modified    = true;
 
    return ret;
 }
@@ -307,7 +307,7 @@ static int action_left_shader_scale_pass(unsigned type, const char *label,
    shader_pass->fbo.scale_x = current_scale;
    shader_pass->fbo.scale_y = current_scale;
 
-   menu_shader_set_modified(true);
+   shader->modified         = true;
 
    return 0;
 }
@@ -323,9 +323,8 @@ static int action_left_shader_filter_pass(unsigned type, const char *label,
    if (!shader_pass)
       return menu_cbs_exit();
 
-   shader_pass->filter = ((shader_pass->filter + delta) % 3);
-
-   menu_shader_set_modified(true);
+   shader_pass->filter                   = ((shader_pass->filter + delta) % 3);
+   shader->modified                      = true;
 
    return 0;
 }
@@ -375,7 +374,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
    menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
    video_shader_resolve_parameters(NULL, shader);
 
-   menu_shader_set_modified(true);
+   shader->modified                      = true;
 
    return 0;
 }
diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c
index db2d44293d..5d1cb70094 100644
--- a/menu/cbs/menu_cbs_ok.c
+++ b/menu/cbs/menu_cbs_ok.c
@@ -1731,7 +1731,7 @@ static int generic_action_ok(const char *path,
                      sizeof(shader_pass->source.path));
                video_shader_resolve_parameters(NULL, shader);
 
-               menu_shader_set_modified(true);
+               shader->modified         = true;
             }
          }
 #endif
@@ -5733,7 +5733,7 @@ static int action_ok_push_dropdown_item_video_shader_num_pass(const char *path,
 
    video_shader_resolve_parameters(NULL, shader);
 
-   menu_shader_set_modified(true);
+   shader->modified           = true;
 
    return action_cancel_pop_default(NULL, NULL, 0, 0);
 #else
@@ -5764,7 +5764,7 @@ static int action_ok_push_dropdown_item_video_shader_param_generic(const char *p
    param_prev->current  = val;
    param_menu->current  = param_prev->current;
 
-   menu_shader_set_modified(true);
+   shader->modified     = true;
 
    return action_cancel_pop_default(NULL, NULL, 0, 0);
 #else
diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c
index 5a34dbfe21..5f62fa3c86 100644
--- a/menu/cbs/menu_cbs_right.c
+++ b/menu/cbs/menu_cbs_right.c
@@ -84,8 +84,7 @@ static int generic_shader_action_parameter_right_internal(unsigned type, const c
    ret = generic_shader_action_parameter_right(param_prev, type, label, wraparound);
 
    param_menu->current = param_prev->current;
-
-   menu_shader_set_modified(true);
+   shader->modified    = true;
 
    return ret;
 }
@@ -316,7 +315,7 @@ static int action_right_shader_scale_pass(unsigned type, const char *label,
    shader_pass->fbo.valid   = current_scale;
    shader_pass->fbo.scale_x = shader_pass->fbo.scale_y = current_scale;
 
-   menu_shader_set_modified(true);
+   shader->modified         = true;
 
    return 0;
 }
@@ -332,9 +331,9 @@ static int action_right_shader_filter_pass(unsigned type, const char *label,
    if (!shader_pass)
       return menu_cbs_exit();
 
-   shader_pass->filter = ((shader_pass->filter + delta) % 3);
+   shader_pass->filter      = ((shader_pass->filter + delta) % 3);
 
-   menu_shader_set_modified(true);
+   shader->modified         = true;
 
    return 0;
 }
@@ -383,7 +382,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
    menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
    video_shader_resolve_parameters(NULL, shader);
 
-   menu_shader_set_modified(true);
+   shader->modified         = true;
 
    return 0;
 }
diff --git a/menu/menu_setting.c b/menu/menu_setting.c
index 1a17c3731a..81b7f2eb11 100644
--- a/menu/menu_setting.c
+++ b/menu/menu_setting.c
@@ -6462,8 +6462,8 @@ void general_write_handler(rarch_setting_t *setting)
                settings_t *settings        = config_get_ptr();
                struct video_shader *shader = menu_shader_get();
 
-               shader->passes = 0;
-               menu_shader_set_modified(true);
+               shader->passes              = 0;
+               shader->modified            = true;
 
                menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
                menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
diff --git a/menu/menu_shader.c b/menu/menu_shader.c
index f40c7786ba..5cf8cf70c2 100644
--- a/menu/menu_shader.c
+++ b/menu/menu_shader.c
@@ -38,13 +38,6 @@
 /* Menu shader */
 
 static struct video_shader *menu_driver_shader = NULL;
-/* indicative of whether shader was modified from the menus: */
-static bool menu_driver_shader_modified        = true;
-
-void menu_shader_set_modified(bool modified)
-{
-   menu_driver_shader_modified = modified;
-}
 
 static enum rarch_shader_type shader_types[] =
 {
@@ -136,7 +129,7 @@ bool menu_shader_manager_init(void)
       if (video_shader_read_conf_preset(conf, menu_shader))
          video_shader_resolve_parameters(conf, menu_shader);
 
-      menu_driver_shader_modified = false;
+      menu_shader->modified = false;
 
       config_file_free(conf);
    }
@@ -247,7 +240,7 @@ static bool menu_shader_manager_save_preset_internal(
    if (type == RARCH_SHADER_NONE)
       return false;
 
-   if (menu_driver_shader_modified)
+   if (shader->modified)
       save_reference = false;
 
    if (!string_is_empty(basename))
@@ -556,7 +549,7 @@ int menu_shader_manager_clear_num_passes(struct video_shader *shader)
 
    video_shader_resolve_parameters(NULL, shader);
 
-   menu_driver_shader_modified = true;
+   shader->modified = true;
 
    return 0;
 }
@@ -574,7 +567,7 @@ int menu_shader_manager_clear_parameter(struct video_shader *shader,
    param->current = MIN(MAX(param->minimum,
             param->current), param->maximum);
 
-   menu_driver_shader_modified = true;
+   shader->modified = true;
 
    return 0;
 }
@@ -590,7 +583,7 @@ int menu_shader_manager_clear_pass_filter(struct video_shader *shader,
 
    shader_pass->filter = RARCH_FILTER_UNSPEC;
 
-   menu_driver_shader_modified = true;
+   shader->modified = true;
 
    return 0;
 }
@@ -608,7 +601,7 @@ void menu_shader_manager_clear_pass_scale(struct video_shader *shader,
    shader_pass->fbo.scale_y = 0;
    shader_pass->fbo.valid   = false;
 
-   menu_driver_shader_modified = true;
+   shader->modified         = true;
 }
 
 void menu_shader_manager_clear_pass_path(struct video_shader *shader,
@@ -620,7 +613,7 @@ void menu_shader_manager_clear_pass_path(struct video_shader *shader,
    if (shader_pass)
       *shader_pass->source.path = '\0';
 
-   menu_driver_shader_modified = true;
+   shader->modified = true;
 }
 
 /**
diff --git a/menu/menu_shader.h b/menu/menu_shader.h
index 126bb5234b..27c7feb8a2 100644
--- a/menu/menu_shader.h
+++ b/menu/menu_shader.h
@@ -141,8 +141,6 @@ bool menu_shader_manager_auto_preset_exists(
       const char *dir_video_shader,
       const char *dir_menu_config);
 
-void menu_shader_set_modified(bool modified);
-
 RETRO_END_DECLS
 
 #endif
diff --git a/retroarch.c b/retroarch.c
index a7f8ad53cb..2d811eb7d5 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -5527,7 +5527,7 @@ bool retroarch_apply_shader(enum rarch_shader_type type, const char *preset_path
       /* reflect in shader manager */
       if (menu_shader_manager_set_preset(menu_shader_get(), type, preset_path, false))
          if (!string_is_empty(preset_path))
-            menu_shader_set_modified(false);
+            menu_shader_get()->modified = false;
 #endif
 
       if (message)
diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp
index df1fc9336e..d52341b3c6 100644
--- a/ui/drivers/qt/shaderparamsdialog.cpp
+++ b/ui/drivers/qt/shaderparamsdialog.cpp
@@ -265,7 +265,7 @@ void ShaderParamsDialog::onFilterComboBoxIndexChanged(int)
             if (video_shader)
                video_shader->pass[pass].filter = filter;
 
-            menu_shader_set_modified(true);
+            video_shader->modified = true;
 
             command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL);
          }
@@ -321,7 +321,7 @@ void ShaderParamsDialog::onScaleComboBoxIndexChanged(int)
                video_shader->pass[pass].fbo.valid = scale;
             }
 
-            menu_shader_set_modified(true);
+            video_shader->modified = true;
 
             command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL);
          }
@@ -399,7 +399,7 @@ void ShaderParamsDialog::onShaderPassMoveDownClicked()
       memcpy(&menu_shader->pass[pass + 1], tempPass.pass, sizeof(struct video_shader_pass));
    }
 
-   menu_shader_set_modified(true);
+   menu_shader->modified = true;
 
    reload();
 }
@@ -474,7 +474,7 @@ void ShaderParamsDialog::onShaderPassMoveUpClicked()
       memcpy(&menu_shader->pass[pass], tempPass.pass, sizeof(struct video_shader_pass));
    }
 
-   menu_shader_set_modified(true);
+   menu_shader->modified = true;
 
    reload();
 }
@@ -560,9 +560,9 @@ void ShaderParamsDialog::onShaderResetPass(int pass)
 
          param->current = param->initial;
       }
-   }
 
-   menu_shader_set_modified(true);
+      video_shader->modified = true;
+   }
 
    reload();
 }
@@ -606,9 +606,9 @@ void ShaderParamsDialog::onShaderResetParameter(QString parameter)
 
       if (param)
          param->current = param->initial;
-   }
 
-   menu_shader_set_modified(true);
+      video_shader->modified = true;
+   }
 
    reload();
 }
@@ -665,9 +665,8 @@ void ShaderParamsDialog::onShaderAddPassClicked()
    else
       return;
 
-   menu_shader_set_modified(true);
-
-   shader_pass = &menu_shader->pass[menu_shader->passes - 1];
+   menu_shader->modified = true;
+   shader_pass           = &menu_shader->pass[menu_shader->passes - 1];
 
    if (!shader_pass)
       return;
@@ -841,9 +840,8 @@ void ShaderParamsDialog::onShaderRemoveAllPassesClicked()
    if (!menu_shader)
       return;
 
-   menu_shader->passes = 0;
-
-   menu_shader_set_modified(true);
+   menu_shader->passes   = 0;
+   menu_shader->modified = true;
 
    onShaderApplyClicked();
 }
@@ -890,7 +888,7 @@ void ShaderParamsDialog::onShaderRemovePass(int pass)
 
    menu_shader->passes--;
 
-   menu_shader_set_modified(true);
+   menu_shader->modified = true;
 
    onShaderApplyClicked();
 }
@@ -1427,7 +1425,7 @@ void ShaderParamsDialog::onShaderParamCheckBoxClicked()
             param->current = (checkBox->isChecked() ? param->maximum : param->minimum);
       }
 
-      menu_shader_set_modified(true);
+      video_shader->modified = true;
    }
 }
 
@@ -1492,9 +1490,10 @@ void ShaderParamsDialog::onShaderParamSliderValueChanged(int)
             newValue = round(newValue / param->step) * param->step;
             param->current = newValue;
          }
+
+         video_shader->modified = true;
       }
 
-      menu_shader_set_modified(true);
    }
 
    if (spinBoxVariant.isValid())
@@ -1599,9 +1598,9 @@ void ShaderParamsDialog::onShaderParamSpinBoxValueChanged(int value)
             slider->setValue(newValue);
             slider->blockSignals(false);
          }
-      }
 
-      menu_shader_set_modified(true);
+         video_shader->modified = true;
+      }
    }
 }
 
@@ -1682,8 +1681,8 @@ void ShaderParamsDialog::onShaderParamDoubleSpinBoxValueChanged(double value)
             slider->setValue(newValue);
             slider->blockSignals(false);
          }
-      }
 
-      menu_shader_set_modified(true);
+         video_shader->modified = true;
+      }
    }
 }