diff --git a/src/preferences.ui b/src/preferences.ui
index 01a4877f..ce282131 100644
--- a/src/preferences.ui
+++ b/src/preferences.ui
@@ -2132,32 +2132,25 @@
         <property name="visible">True</property>
         <property name="margin">6</property>
         <property name="orientation">vertical</property>
-        <child>
-          <object class="GtkModelButton">
-            <property name="visible">True</property>
-            <property name="action-name">win.new</property>
-            <property name="text" translatable="yes">New</property>
-          </object>
-        </child>
         <child>
           <object class="GtkModelButton">
             <property name="visible">True</property>
             <property name="action-name">win.clone</property>
-            <property name="text" translatable="yes">Clone</property>
+            <property name="text" translatable="yes">Clone…</property>
           </object>
         </child>
         <child>
           <object class="GtkModelButton">
             <property name="visible">True</property>
             <property name="action-name">win.rename</property>
-            <property name="text" translatable="yes">Rename</property>
+            <property name="text" translatable="yes">Rename…</property>
           </object>
         </child>
         <child>
           <object class="GtkModelButton">
             <property name="visible">True</property>
             <property name="action-name">win.delete</property>
-            <property name="text" translatable="yes">Delete</property>
+            <property name="text" translatable="yes">Delete…</property>
           </object>
         </child>
         <child>
@@ -2170,7 +2163,7 @@
           <object class="GtkModelButton">
             <property name="visible">True</property>
             <property name="action-name">win.make-default</property>
-            <property name="text" translatable="yes">Make default</property>
+            <property name="text" translatable="yes">Set as default</property>
           </object>
         </child>
       </object>
diff --git a/src/terminal-prefs.c b/src/terminal-prefs.c
index 11b255b0..d1cc8039 100644
--- a/src/terminal-prefs.c
+++ b/src/terminal-prefs.c
@@ -76,9 +76,17 @@ listbox_update (GtkListBox *box)
   GSettings *profile;
   gs_unref_object GSettings *default_profile;
   GtkStack *stack;
+  GtkMenuButton *button;
 
   default_profile = terminal_settings_list_ref_default_child (the_pref_data->profiles_list);
 
+  /* GTK+ doesn't seem to like if a popover is assigned to multiple buttons at once
+   * (not even temporarily), so make sure to remove it from the previous button first. */
+  for (i = 0; (row = gtk_list_box_get_row_at_index (box, i)) != NULL; i++) {
+    button = g_object_get_data (G_OBJECT (row), "popover-button");
+    gtk_menu_button_set_popover (button, NULL);
+  }
+
   for (i = 0; (row = gtk_list_box_get_row_at_index (box, i)) != NULL; i++) {
     profile = g_object_get_data (G_OBJECT (row), "gsettings");
 
@@ -93,6 +101,11 @@ listbox_update (GtkListBox *box)
     if (is_selected_profile) {
       g_simple_action_set_enabled (lookup_action (GTK_WINDOW (the_pref_data->dialog), "delete"), !is_default_profile);
       g_simple_action_set_enabled (lookup_action (GTK_WINDOW (the_pref_data->dialog), "make-default"), !is_default_profile);
+
+      GtkPopover *popover_menu = GTK_POPOVER (gtk_builder_get_object (the_pref_data->builder, "popover-menu"));
+      button = g_object_get_data (G_OBJECT (row), "popover-button");
+      gtk_menu_button_set_popover (button, GTK_WIDGET (popover_menu));
+      gtk_popover_set_relative_to (popover_menu, GTK_WIDGET (button));
     }
   }
 }
@@ -517,24 +530,6 @@ listbox_create_row (const char *name,
   gtk_stack_set_visible_child_name (popover_stack, "placeholder");
   gtk_stack_set_visible_child_name (home_stack, "placeholder");
 
-  // FIXME Take the popover menu (and its model) from the .ui file, just as we do with popover-dialog.
-  // For some mysterious reason my first attempt didn't work correctly, the popover appeared
-  // intermittently at random places. Give it another try.
-  GMenu *model = g_menu_new ();
-  GMenu *model_section = g_menu_new ();
-  g_menu_append (model_section, _("Clone…"), "win.clone");
-  g_menu_append (model_section, _("Rename…"), "win.rename");
-  g_menu_append (model_section, _("Delete…"), "win.delete");
-  g_menu_append_section (model, NULL, G_MENU_MODEL (model_section));
-
-  model_section = g_menu_new ();
-  g_menu_append (model_section, _("Set as default"), "win.make-default");
-  g_menu_append_section (model, NULL, G_MENU_MODEL (model_section));
-
-  GtkPopover *popover = GTK_POPOVER (gtk_popover_new (GTK_WIDGET (popover_button)));
-  gtk_popover_bind_model (popover, G_MENU_MODEL (model), NULL);
-  gtk_menu_button_set_popover (popover_button, GTK_WIDGET (popover));
-
   return row;
 }
 
