diff --git a/core/modules/menu_ui/src/MenuForm.php b/core/modules/menu_ui/src/MenuForm.php
index 2415032..85549b2 100644
--- a/core/modules/menu_ui/src/MenuForm.php
+++ b/core/modules/menu_ui/src/MenuForm.php
@@ -381,7 +381,7 @@ protected function buildOverviewTreeForm($tree, $delta) {
         if ($edit_route) {
           $operations['edit']['url'] = $edit_route;
           // Bring the user back to the menu overview.
-          $operations['edit']['query']['destination'] = $this->entity->url();
+          $operations['edit']['query'] = drupal_get_destination();
         }
         else {
           // Fall back to the standard edit link.
@@ -390,15 +390,15 @@ protected function buildOverviewTreeForm($tree, $delta) {
           );
         }
         // Links can either be reset or deleted, not both.
-        if ($link->isResettable()) {
+        if ($link->isResettable()->isAllowed()) {
           $operations['reset'] = array(
             'title' => $this->t('Reset'),
             'url' => Url::fromRoute('menu_ui.link_reset', ['menu_link_plugin' => $link->getPluginId()]),
           );
         }
         elseif ($delete_link = $link->getDeleteRoute()) {
-          $operations['delete'] = $delete_link;
-          $operations['delete']['query']['destination'] = $this->entity->url();
+          $operations['delete']['url'] = $delete_link;
+          $operations['delete']['query'] = drupal_get_destination();
           $operations['delete']['title'] = $this->t('Delete');
         }
         if ($link->isTranslatable()) {
diff --git a/core/modules/menu_ui/src/Plugin/Menu/LocalAction/MenuLinkAdd.php b/core/modules/menu_ui/src/Plugin/Menu/LocalAction/MenuLinkAdd.php
index 9fee161..31605fd 100644
--- a/core/modules/menu_ui/src/Plugin/Menu/LocalAction/MenuLinkAdd.php
+++ b/core/modules/menu_ui/src/Plugin/Menu/LocalAction/MenuLinkAdd.php
@@ -21,17 +21,7 @@ class MenuLinkAdd extends LocalActionDefault {
    */
   public function getOptions(Request $request) {
     $options = parent::getOptions($request);
-    // Append the current path as destination to the query string.
-    if ($request->attributes->has(RouteObjectInterface::ROUTE_NAME)) {
-      $route_name = $request->attributes->get(RouteObjectInterface::ROUTE_NAME);
-      $raw_variables = array();
-      if ($request->attributes->has('_raw_variables')) {
-        $raw_variables = $request->attributes->get('_raw_variables')->all();
-      }
-      // @todo Use RouteMatch instead of Request.
-      //   https://www.drupal.org/node/2294157
-      $options['query']['destination'] = \Drupal::urlGenerator()->generateFromRoute($route_name, $raw_variables);
-    }
+    $options['query']['destination'] = drupal_get_destination()['destination'];
     return $options;
   }
 
diff --git a/core/modules/menu_ui/src/Tests/MenuTest.php b/core/modules/menu_ui/src/Tests/MenuTest.php
index 2864593..bb3c0d1 100644
--- a/core/modules/menu_ui/src/Tests/MenuTest.php
+++ b/core/modules/menu_ui/src/Tests/MenuTest.php
@@ -238,6 +238,25 @@ function deleteCustomMenu() {
    */
   function doMenuTests() {
     $menu_name = $this->menu->id();
+
+    // Test the 'Add link' local action.
+    $this->drupalGet('admin/structure/menu/manage/' . $menu_name);
+    $this->clickLink(t('Add link'));
+    $link_title = $this->randomString();
+    $this->drupalPostForm(NULL, array('url' => '<front>', 'title[0][value]' => $link_title), t('Save'));
+    $this->assertUrl('admin/structure/menu/manage/' . $menu_name);
+    // Test the 'Edit' operation.
+    $this->clickLink(t('Edit'));
+    $this->assertFieldByName('title[0][value]', $link_title);
+    $link_title = $this->randomString();
+    $this->drupalPostForm(NULL, array('title[0][value]' => $link_title), t('Save'));
+    $this->assertUrl('admin/structure/menu/manage/' . $menu_name);
+    // Test the 'Delete' operation.
+    $this->clickLink(t('Delete'));
+    $this->assertRaw(t('Are you sure you want to delete the custom menu link %item?', array('%item' => $link_title)));
+    $this->drupalPostForm(NULL, array(), t('Confirm'));
+    $this->assertUrl('admin/structure/menu/manage/' . $menu_name);
+
     // Add nodes to use as links for menu links.
     $node1 = $this->drupalCreateNode(array('type' => 'article'));
     $node2 = $this->drupalCreateNode(array('type' => 'article'));
