diff --git a/meson.build b/meson.build
index b8cbefc2e4223814d1aff004a37341c993311962..458aa0d399dfaae53315fd52c6fd0cbdf75d965c 100644
--- a/meson.build
+++ b/meson.build
@@ -19,7 +19,7 @@ desktopdir = datadir / 'applications'
 gnome = import('gnome')
 
 gio_dep = dependency('gio-2.0', version: '>= 2.66')
-gtk_dep = dependency('gtk4', version: '>= 4.0')
+gtk_dep = dependency('gtk4', version: '>= 4.8')
 libadwaita_dep = dependency('libadwaita-1')
 
 conf = configuration_data()
@@ -45,8 +45,8 @@ config_h = vcs_tag(
 
 cflags = ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_66',
           '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_66',
-          '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_0',
-          '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_0',
+          '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_8',
+          '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_8',
           '-Wno-overlength-strings',
 ]
 
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index d9ec1f2b3c42f02efbe5939c706d14967a2deabb..561f7d1eb9cd4e58c82fb289bc759bedced13a9f 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -105,6 +105,14 @@ const GActionEntry win_entries[] = {
     { .name = "show-primary-menu", .activate = activate_show_primary_menu },
 };
 
+static void
+rugby_app_window_dispose (GObject *object)
+{
+    gtk_widget_dispose_template (GTK_WIDGET (object), RUGBY_TYPE_APP_WINDOW);
+
+    G_OBJECT_CLASS (rugby_app_window_parent_class)->dispose (object);
+}
+
 static void
 rugby_app_window_init (RugbyAppWindow *self)
 {
@@ -119,11 +127,14 @@ rugby_app_window_init (RugbyAppWindow *self)
 static void
 rugby_app_window_class_init (RugbyAppWindowClass *klass)
 {
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
     GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
     g_type_ensure (RUGBY_TYPE_POSSIBILITY_WIDGET);
     g_type_ensure (RUGBY_TYPE_LIST_STORE);
 
+    object_class->dispose = rugby_app_window_dispose;
+
     gtk_widget_class_set_template_from_resource (widget_class,
                                                  "/uk/me/bcowan/Rugby/window.ui");
 
diff --git a/src/rugby-pref-window.c b/src/rugby-pref-window.c
index 79b0b08b87e9df7adc957245aecff1665bea35de..c226b7b8b7f9c8014e2a9310e744fc574eaaea01 100644
--- a/src/rugby-pref-window.c
+++ b/src/rugby-pref-window.c
@@ -24,6 +24,7 @@ rugby_pref_window_dispose (GObject *object)
 {
   RugbyPrefWindow *self = RUGBY_PREF_WINDOW (object);
 
+  gtk_widget_dispose_template (GTK_WIDGET (object), RUGBY_TYPE_PREF_WINDOW);
   g_clear_object (&self->settings);
 
   G_OBJECT_CLASS (rugby_pref_window_parent_class)->dispose (object);