diff --git a/data/gtk/window.blp b/data/gtk/window.blp
index 0b31f50bb3800eb7debb25a9daa9e03464f81b42..b6c608c608331f00706e6f216847fa1a0d379b2f 100644
--- a/data/gtk/window.blp
+++ b/data/gtk/window.blp
@@ -98,6 +98,25 @@ template RugbyAppWindow : Adw.ApplicationWindow {
       }
     }
   }
+
+  ShortcutController {
+    scope: local;
+
+    Shortcut {
+      action: "action(win.score-changed)";
+      arguments: "'up'";
+      trigger: "<Ctrl>Up|<Ctrl>Right";
+    }
+    Shortcut {
+      action: "action(win.score-changed)";
+      arguments: "'down'";
+      trigger: "<Ctrl>Down|<Ctrl>Left";
+    }
+    Shortcut {
+      action: "action(win.show-try-filter)";
+      trigger: "<Ctrl>F";
+    }
+  }
 }
 
 menu app_menu {
diff --git a/src/main.c b/src/main.c
index 1c9abb08531b744b0d5cf7488aaea69f292a29f3..03a2ea0e2b5e5656268e69ef35cb3312a88e9bcb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -71,15 +71,6 @@ on_startup (GApplication          *app,
     gtk_application_set_accels_for_action (GTK_APPLICATION (app),
                                            "app.prefs",
                                            (const char*[]) { "<Ctrl>comma", NULL });
-    gtk_application_set_accels_for_action (GTK_APPLICATION (app),
-                                           "win.score-changed::up",
-                                           (const char*[]) { "<Ctrl>Up", "<Ctrl>Right", NULL });
-    gtk_application_set_accels_for_action (GTK_APPLICATION (app),
-                                           "win.score-changed::down",
-                                           (const char*[]) { "<Ctrl>Down", "<Ctrl>Left", NULL });
-    gtk_application_set_accels_for_action (GTK_APPLICATION (app),
-                                           "win.show-try-filter",
-                                           (const char*[]) { "<Ctrl>F", NULL });
 }
 
 int