diff --git a/gnu/local.mk b/gnu/local.mk
index 5cb9874d9f..e382235de1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1671,7 +1671,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
   %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch    \
   %D%/packages/patches/musl-cross-locale.patch			\
-  %D%/packages/patches/mutter-fix-inverted-test.patch		\
   %D%/packages/patches/mutt-store-references.patch		\
   %D%/packages/patches/m17n-lib-1.8.0-use-pkg-config-for-freetype.patch	\
   %D%/packages/patches/nanosvg-prusa-slicer.patch		\
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index d354327497..84a237d9f3 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7789,7 +7789,7 @@ (define-public zenity
 (define-public mutter
   (package
     (name "mutter")
-    (version "44.3")
+    (version "44.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -7797,10 +7797,7 @@ (define-public mutter
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0l85qyn6x5hyaaclzcbqd44xpd582gdindqfam8f9lsh46zvwp0q"))
-              ;; TODO: Remove on update as this was merged upstream.  See
-              ;; <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>.
-              (patches (search-patches "mutter-fix-inverted-test.patch"))))
+                "1a0j1ygph6bz83da4gr2z02xqf2l5y1x10482vyh3d34arqhph26"))))
     ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
     ;; versions of cogl and clutter.  As a result, many of the inputs,
     ;; propagated-inputs, and configure flags used in cogl and clutter are
@@ -7940,9 +7937,8 @@ (define-public mutter
            python-dbus
            python-dbusmock))
     (propagated-inputs
-     (list gsettings-desktop-schemas      ;required by libmutter.pc
-           gtk+                           ;required by libmutter.pc
-           ;; mutter-clutter-1.0.pc and mutter-cogl-1.0.pc refer to these:
+     (list gsettings-desktop-schemas      ;required by libmutter-12.pc
+           ;; mutter-clutter-12.pc and mutter-cogl-12.pc refer to these:
            at-spi2-core
            cairo
            eudev
diff --git a/gnu/packages/patches/mutter-fix-inverted-test.patch b/gnu/packages/patches/mutter-fix-inverted-test.patch
deleted file mode 100644
index 3676b31def..0000000000
--- a/gnu/packages/patches/mutter-fix-inverted-test.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-From 5a83e8ef8250526a40e8e69c6398f990ab482b2f Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 14:42:51 +0200
-Subject: [PATCH 1/5] cogl/gl-framebuffer: Fix spurious trailing spaces
-
-Purely cosmetic fix, no functional change.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 12 ++++++------
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 12 ++++++------
- 2 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index d6609bb2074..8d76f1578bf 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -72,32 +72,32 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-         GLenum attachment, pname;
-         size_t offset;
-       } params[] = {
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
-           .offset = offsetof (CoglFramebufferBits, red),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
-           .offset = offsetof (CoglFramebufferBits, green),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
-           .offset = offsetof (CoglFramebufferBits, blue),
-         },
--        { 
-+        {
-           .attachment = GL_BACK_LEFT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
-           .offset = offsetof (CoglFramebufferBits, alpha),
-         },
--        { 
-+        {
-           .attachment = GL_DEPTH,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
-           .offset = offsetof (CoglFramebufferBits, depth),
-         },
--        { 
-+        {
-           .attachment = GL_STENCIL,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
-           .offset = offsetof (CoglFramebufferBits, stencil),
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index c8db6a23a29..1ffc1d53509 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -82,32 +82,32 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-         GLenum attachment, pname;
-         size_t offset;
-       } params[] = {
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
-           .offset = offsetof (CoglFramebufferBits, red),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
-           .offset = offsetof (CoglFramebufferBits, green),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
-           .offset = offsetof (CoglFramebufferBits, blue),
-         },
--        { 
-+        {
-           .attachment = GL_COLOR_ATTACHMENT0,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
-           .offset = offsetof (CoglFramebufferBits, alpha),
-         },
--        { 
-+        {
-           .attachment = GL_DEPTH_ATTACHMENT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
-           .offset = offsetof (CoglFramebufferBits, depth),
-         },
--        { 
-+        {
-           .attachment = GL_STENCIL_ATTACHMENT,
-           .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
-           .offset = offsetof (CoglFramebufferBits, stencil),
--- 
-GitLab
-
-
-From a2203df9f43b9e501a972d23b3d5584005c03ce6 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 11:54:58 +0200
-Subject: [PATCH 2/5] cogl/gl-framebuffer: Fix inverted test in
- ensure_bits_initialized()
-
-Cogl's feature COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS is required
-to use the GL_FRAMEBUFFER_ATTACHMENT_* queries.
-
-Unfortunately, the test for the availability of the private feature is
-actually inverted in ensure_bits_initialized() which causes that whole
-portion of code to be ignored, falling back to the glGetIntegerv()
-method which isn't supported in core profiles.
-
-As Mesa has recently started to be more strict about these, this causes
-the CI tests to fail in mutter.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 1ffc1d53509..75a8b0c1fe2 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -76,7 +76,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
- #ifdef HAVE_COGL_GL
--  if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-         GLenum attachment, pname;
--- 
-GitLab
-
-
-From fad240f437d6b11f664c9c09aecabe5f5e703eca Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 5 Jun 2023 10:31:38 +0200
-Subject: [PATCH 3/5] cogl/gl-framebuffer: Match testing features
-
-The function ensure_bits_initialized() in cogl-gl-framebuffer-fbo.c
-checks for COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS whereas the same
-in cogl-gl-framebuffer-back.c simply checks for the driver being
-COGL_DRIVER_GL3.
-
-Change the later to use the COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS
-flag as well.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index 8d76f1578bf..f6a17e8f070 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -66,7 +66,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
- #ifdef HAVE_COGL_GL
--  if (ctx->driver == COGL_DRIVER_GL3)
-+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-         GLenum attachment, pname;
--- 
-GitLab
-
-
-From c3af4c1b1571b05f67d48b90d9ea7313f3ca6003 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Fri, 2 Jun 2023 14:27:29 +0200
-Subject: [PATCH 4/5] cogl/gl-framebuffer: Fail without QUERY_FRAMEBUFFER_BITS
-
-glGetIntegerv() with GL_RED_BITS/GL_GREEN_BITS/GL_BLUE_BITS/etc. is not
-supported with the GL core context, so there is no point in falling back
-to that without supporting COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS,
-as this will cause an GL error.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 7 +------
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 7 +------
- 2 files changed, 2 insertions(+), 12 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index f6a17e8f070..0ccd2324077 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -119,12 +119,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-   else
- #endif /* HAVE_COGL_GL */
-     {
--      GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
--      GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
--      GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
--      GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
--      GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
--      GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
-+      return FALSE;
-     }
- 
-   COGL_NOTE (FRAMEBUFFER,
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 75a8b0c1fe2..524196207f5 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -129,12 +129,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-   else
- #endif /* HAVE_COGL_GL */
-     {
--      GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red));
--      GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green));
--      GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue));
--      GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha));
--      GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth));
--      GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil));
-+      return FALSE;
-     }
- 
-   if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_ALPHA_TEXTURES) &&
--- 
-GitLab
-
-
-From d65883e0d7d70987e3888b86222b109c35f5a7a2 Mon Sep 17 00:00:00 2001
-From: Olivier Fourdan <ofourdan@redhat.com>
-Date: Mon, 5 Jun 2023 10:38:41 +0200
-Subject: [PATCH 5/5] cogl/gl-framebuffer: Remove conditional on HAVE_COGL_GL
-
-By testing the features flag, we can get rid of the conditional build
-on HAVE_COGL_GL entirely.
-
-Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
----
- cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 --
- cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c  | 2 --
- 2 files changed, 4 deletions(-)
-
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-index 0ccd2324077..94154d48efb 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c
-@@ -65,7 +65,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-                                         framebuffer,
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
--#ifdef HAVE_COGL_GL
-   if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-@@ -117,7 +116,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back)
-         }
-     }
-   else
--#endif /* HAVE_COGL_GL */
-     {
-       return FALSE;
-     }
-diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-index 524196207f5..3ea133d3143 100644
---- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-+++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c
-@@ -75,7 +75,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-                                         framebuffer,
-                                         COGL_FRAMEBUFFER_STATE_BIND);
- 
--#ifdef HAVE_COGL_GL
-   if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS))
-     {
-       const struct {
-@@ -127,7 +126,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo)
-         }
-     }
-   else
--#endif /* HAVE_COGL_GL */
-     {
-       return FALSE;
-     }
--- 
-GitLab
-
