diff --git a/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch b/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch
deleted file mode 100644
index 0ace907..0000000
--- a/meta-openembedded/meta-xfce/recipes-apps/mousepad/files/0001-Plugin-support-Properly-handle-plugin-settings.patch
+++ /dev/null
@@ -1,279 +0,0 @@
-From 6d1800a305698f801236a2d73ebe178fa2d1139d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ga=C3=ABl=20Bonithon?= <gael@xfce.org>
-Date: Sat, 12 Jun 2021 16:45:56 +0200
-Subject: [PATCH] Plugin support: Properly handle plugin settings
-
-What was done in !92 was strictly speaking only suitable for one plugin.
-This could be extended to several plugins by adding a `.gschema.xml`
-file in `plugins/`, intermediate between the one of the application and
-those of the plugins, or by refactoring the Makefiles with inclusions
-and a single call to `@GSETTINGS_RULES@`.
-
-But in any case, due to the relative rigidity of the `.gschema.xml` file
-format and the internal workings of `glib-compile-schemas`, this would
-only be suitable for plugins that are present at compile time, i.e.
-"fake plugins".
-
-Instead, this commit adds the plugin settings at load time, as is
-natural and as the `GSettingsSchema` documentation states. To do this,
-the setting store is extended to contain several roots: the application
-root and the plugin roots.
-
-For the latter, a unified naming convention is preserved, with the
-prefix `org.xfce.mousepad.plugins.`, but they are in fact completely
-independent of each other and independent of the application root.
-
-Fixes #136, related to !92.
-
-Upstream-Status: Backport [https://gitlab.xfce.org/apps/mousepad/-/commit/0d9d4f05aace800118d0a390e4e5dc5ebb940ca5]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- mousepad/mousepad-application.c               | 12 +++-
- mousepad/mousepad-settings-store.c            | 70 ++++++++++++-------
- mousepad/mousepad-settings-store.h            |  3 +
- mousepad/mousepad-settings.c                  | 14 +++-
- mousepad/mousepad-settings.h                  |  1 +
- mousepad/org.xfce.mousepad.gschema.xml        |  1 -
- ...g.xfce.mousepad.plugins.gspell.gschema.xml |  4 --
- 7 files changed, 71 insertions(+), 34 deletions(-)
-
-diff --git a/mousepad/mousepad-application.c b/mousepad/mousepad-application.c
-index d9a64ff..378d78e 100644
---- a/mousepad/mousepad-application.c
-+++ b/mousepad/mousepad-application.c
-@@ -721,7 +721,7 @@ mousepad_application_load_plugins (MousepadApplication *application)
-   GError                  *error = NULL;
-   GDir                    *dir;
-   const gchar             *basename;
--  gchar                   *provider_name;
-+  gchar                   *provider_name, *schema_id;
-   gchar                  **strs;
-   gsize                    n_strs;
- 
-@@ -775,6 +775,16 @@ mousepad_application_load_plugins (MousepadApplication *application)
-                                            application, G_CONNECT_SWAPPED);
-           g_action_map_add_action (G_ACTION_MAP (application), G_ACTION (action));
- 
-+          /* add its settings to the setting store */
-+          if (g_str_has_prefix (provider_name, "mousepad-plugin-"))
-+            schema_id = provider_name + 16;
-+          else
-+            schema_id = provider_name;
-+
-+          schema_id = g_strconcat (MOUSEPAD_ID, ".plugins.", schema_id, NULL);
-+          mousepad_settings_add_root (schema_id);
-+          g_free (schema_id);
-+
-           /* instantiate this provider types and initialize its action state */
-           if (g_strv_contains ((const gchar *const *) strs, provider_name))
-             {
-diff --git a/mousepad/mousepad-settings-store.c b/mousepad/mousepad-settings-store.c
-index de989bd..d117c53 100644
---- a/mousepad/mousepad-settings-store.c
-+++ b/mousepad/mousepad-settings-store.c
-@@ -29,9 +29,11 @@
- 
- struct MousepadSettingsStore_
- {
--  GObject     parent;
--  GSettings  *root;
--  GHashTable *keys;
-+  GObject parent;
-+
-+  GSettingsBackend *backend;
-+  GList            *roots;
-+  GHashTable       *keys;
- };
- 
- 
-@@ -76,8 +78,10 @@ mousepad_setting_key_new (const gchar *key_name,
- 
- 
- static void
--mousepad_setting_key_free (MousepadSettingKey *key)
-+mousepad_setting_key_free (gpointer data)
- {
-+  MousepadSettingKey *key = data;
-+
-   if (G_LIKELY (key != NULL))
-     {
-       g_object_unref (key->settings);
-@@ -138,16 +142,16 @@ mousepad_settings_store_class_init (MousepadSettingsStoreClass *klass)
- static void
- mousepad_settings_store_finalize (GObject *object)
- {
--  MousepadSettingsStore *self;
-+  MousepadSettingsStore *self = MOUSEPAD_SETTINGS_STORE (object);
- 
-   g_return_if_fail (MOUSEPAD_IS_SETTINGS_STORE (object));
- 
--  self = MOUSEPAD_SETTINGS_STORE (object);
-+  if (self->backend != NULL)
-+    g_object_unref (self->backend);
- 
-+  g_list_free_full (self->roots, g_object_unref);
-   g_hash_table_destroy (self->keys);
- 
--  g_object_unref (self->root);
--
-   G_OBJECT_CLASS (mousepad_settings_store_parent_class)->finalize (object);
- }
- 
-@@ -212,28 +216,19 @@ static void
- mousepad_settings_store_init (MousepadSettingsStore *self)
- {
- #ifdef MOUSEPAD_SETTINGS_KEYFILE_BACKEND
--  GSettingsBackend *backend;
--  gchar            *conf_file;
--  conf_file = g_build_filename (g_get_user_config_dir (),
--                                "Mousepad",
--                                "settings.conf",
--                                NULL);
--  backend = g_keyfile_settings_backend_new (conf_file, "/", NULL);
-+  gchar *conf_file;
-+
-+  conf_file = g_build_filename (g_get_user_config_dir (), "Mousepad", "settings.conf", NULL);
-+  self->backend = g_keyfile_settings_backend_new (conf_file, "/", NULL);
-   g_free (conf_file);
--  self->root = g_settings_new_with_backend (MOUSEPAD_ID, backend);
--  g_object_unref (backend);
- #else
--  self->root = g_settings_new (MOUSEPAD_ID);
-+  self->backend = NULL;
- #endif
- 
--  self->keys = g_hash_table_new_full (g_str_hash,
--                                      g_str_equal,
--                                      NULL,
--                                      (GDestroyNotify) mousepad_setting_key_free);
-+  self->roots = NULL;
-+  self->keys = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, mousepad_setting_key_free);
- 
--  mousepad_settings_store_add_settings (self, MOUSEPAD_ID,
--                                        g_settings_schema_source_get_default (),
--                                        self->root);
-+  mousepad_settings_store_add_root (self, MOUSEPAD_ID);
- }
- 
- 
-@@ -246,6 +241,31 @@ mousepad_settings_store_new (void)
- 
- 
- 
-+void
-+mousepad_settings_store_add_root (MousepadSettingsStore *self,
-+                                  const gchar           *schema_id)
-+{
-+  GSettingsSchemaSource *source;
-+  GSettingsSchema       *schema;
-+  GSettings             *root;
-+
-+  source = g_settings_schema_source_get_default ();
-+  schema = g_settings_schema_source_lookup (source, schema_id, TRUE);
-+
-+  /* exit silently if no schema is found: plugins may have settings or not */
-+  if (schema == NULL)
-+    return;
-+
-+  root = g_settings_new_full (schema, self->backend, NULL);
-+  g_settings_schema_unref (schema);
-+
-+  self->roots = g_list_prepend (self->roots, root);
-+
-+  mousepad_settings_store_add_settings (self, schema_id, source, root);
-+}
-+
-+
-+
- const gchar *
- mousepad_settings_store_lookup_key_name (MousepadSettingsStore *self,
-                                          const gchar           *setting)
-diff --git a/mousepad/mousepad-settings-store.h b/mousepad/mousepad-settings-store.h
-index 3f5cae1..4842036 100644
---- a/mousepad/mousepad-settings-store.h
-+++ b/mousepad/mousepad-settings-store.h
-@@ -38,6 +38,9 @@ GType                  mousepad_settings_store_get_type        (void);
- 
- MousepadSettingsStore *mousepad_settings_store_new             (void);
- 
-+void                   mousepad_settings_store_add_root        (MousepadSettingsStore  *store,
-+                                                                const gchar            *schema_id);
-+
- const gchar           *mousepad_settings_store_lookup_key_name (MousepadSettingsStore  *store,
-                                                                 const gchar            *setting);
- 
-diff --git a/mousepad/mousepad-settings.c b/mousepad/mousepad-settings.c
-index d071de6..66b338d 100644
---- a/mousepad/mousepad-settings.c
-+++ b/mousepad/mousepad-settings.c
-@@ -24,6 +24,15 @@ static MousepadSettingsStore *settings_store = NULL;
- 
- 
- 
-+void
-+mousepad_settings_init (void)
-+{
-+  if (settings_store == NULL)
-+    settings_store = mousepad_settings_store_new ();
-+}
-+
-+
-+
- void
- mousepad_settings_finalize (void)
- {
-@@ -39,10 +48,9 @@ mousepad_settings_finalize (void)
- 
- 
- void
--mousepad_settings_init (void)
-+mousepad_settings_add_root (const gchar *schema_id)
- {
--  if (settings_store == NULL)
--    settings_store = mousepad_settings_store_new ();
-+  mousepad_settings_store_add_root (settings_store, schema_id);
- }
- 
- 
-diff --git a/mousepad/mousepad-settings.h b/mousepad/mousepad-settings.h
-index bc63d11..615be51 100644
---- a/mousepad/mousepad-settings.h
-+++ b/mousepad/mousepad-settings.h
-@@ -87,6 +87,7 @@ G_BEGIN_DECLS
- 
- void       mousepad_settings_init          (void);
- void       mousepad_settings_finalize      (void);
-+void       mousepad_settings_add_root      (const gchar        *schema_id);
- 
- void       mousepad_setting_bind           (const gchar        *setting,
-                                             gpointer            object,
-diff --git a/mousepad/org.xfce.mousepad.gschema.xml b/mousepad/org.xfce.mousepad.gschema.xml
-index e802719..8509ee3 100644
---- a/mousepad/org.xfce.mousepad.gschema.xml
-+++ b/mousepad/org.xfce.mousepad.gschema.xml
-@@ -39,7 +39,6 @@
- 
-   <!-- generic schemas -->
-   <schema id="org.xfce.mousepad" path="/org/xfce/mousepad/" gettext-domain="mousepad">
--    <child name="plugins" schema="org.xfce.mousepad.plugins"/>
-     <child name="preferences" schema="org.xfce.mousepad.preferences"/>
-     <child name="state" schema="org.xfce.mousepad.state"/>
-   </schema>
-diff --git a/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml b/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
-index 6db65b6..95295ba 100644
---- a/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
-+++ b/plugins/gspell-plugin/org.xfce.mousepad.plugins.gspell.gschema.xml
-@@ -1,9 +1,5 @@
- <schemalist>
- 
--  <schema id="org.xfce.mousepad.plugins" path="/org/xfce/mousepad/plugins/" gettext-domain="mousepad">
--    <child name="gspell" schema="org.xfce.mousepad.plugins.gspell"/>
--  </schema>
--
-   <schema id="org.xfce.mousepad.plugins.gspell" path="/org/xfce/mousepad/plugins/gspell/" gettext-domain="mousepad">
-     <child name="preferences" schema="org.xfce.mousepad.plugins.gspell.preferences"/>
-   </schema>
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
similarity index 73%
rename from meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb
rename to meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
index bab5642..0f847e4 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.5.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/mousepad/mousepad_0.5.8.bb
@@ -7,9 +7,7 @@
 
 inherit xfce-app gsettings mime-xdg
 
-SRC_URI += "file://0001-Plugin-support-Properly-handle-plugin-settings.patch"
-
-SRC_URI[sha256sum] = "40c35f00e0e10df50a59bd0dbba9007d2fb5574ed8a2aa73b0fc5ef40e64abe1"
+SRC_URI[sha256sum] = "921ebbcfdfd5e2e56f31a5177a2d26f46c758cc972595017bca9e0a6a3c3a721"
 
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[spell] = "--enable-plugin-gspell,--disable-plugin-gspell,gspell"
