diff --git a/core/modules/shortcut/shortcut.module b/core/modules/shortcut/shortcut.module
index 5f1966c..dfab91e 100644
--- a/core/modules/shortcut/shortcut.module
+++ b/core/modules/shortcut/shortcut.module
@@ -251,10 +251,8 @@ function shortcut_renderable_links($shortcut_set = NULL) {
     $shortcut_set = shortcut_current_displayed_set();
   }
 
-  /** @var \Drupal\shortcut\ShortcutInterface[] $shortcuts  */
-  $shortcuts = \Drupal::entityManager()->getStorage('shortcut')->loadByProperties(array('shortcut_set' => $shortcut_set->id()));
   $cache_tags = array();
-  foreach ($shortcuts as $shortcut) {
+  foreach ($shortcut_set->getShortcuts() as $shortcut) {
     $shortcut = \Drupal::entityManager()->getTranslationFromContext($shortcut);
     $links[$shortcut->id()] = array(
       'type' => 'link',
diff --git a/core/modules/shortcut/src/Entity/Shortcut.php b/core/modules/shortcut/src/Entity/Shortcut.php
index 1a0765d..ad8f61c 100644
--- a/core/modules/shortcut/src/Entity/Shortcut.php
+++ b/core/modules/shortcut/src/Entity/Shortcut.php
@@ -183,4 +183,21 @@ public function getCacheTags() {
     return $this->shortcut_set->entity->getCacheTags();
   }
 
+  /**
+   * Sort shortcut objects.
+   *
+   * @param \Drupal\shortcut\ShortcutInterface[] $shortcuts
+   *   The array of shortcut objects to sort.
+   */
+  public static function sort(array &$shortcuts) {
+    uasort($shortcuts, function (ShortcutInterface $a, ShortcutInterface $b) {
+      $a_weight = $a->getWeight();
+      $b_weight = $b->getWeight();
+      if ($a_weight == $b_weight) {
+        return strnatcasecmp($a->getTitle(), $b->getTitle());
+      }
+      return ($a_weight < $b_weight) ? -1 : 1;
+    });
+  }
+
 }
diff --git a/core/modules/shortcut/src/Entity/ShortcutSet.php b/core/modules/shortcut/src/Entity/ShortcutSet.php
index aa0ccfc..abf953b 100644
--- a/core/modules/shortcut/src/Entity/ShortcutSet.php
+++ b/core/modules/shortcut/src/Entity/ShortcutSet.php
@@ -117,7 +117,9 @@ public function resetLinkWeights() {
    * {@inheritdoc}
    */
   public function getShortcuts() {
-    return \Drupal::entityManager()->getStorage('shortcut')->loadByProperties(array('shortcut_set' => $this->id()));
+    $shortcuts = \Drupal::entityManager()->getStorage('shortcut')->loadByProperties(array('shortcut_set' => $this->id()));
+    Shortcut::sort($shortcuts);
+    return $shortcuts;
   }
 
 }
diff --git a/core/modules/shortcut/src/Form/SetCustomize.php b/core/modules/shortcut/src/Form/SetCustomize.php
index e0cf262..4c0a268 100644
--- a/core/modules/shortcut/src/Form/SetCustomize.php
+++ b/core/modules/shortcut/src/Form/SetCustomize.php
@@ -79,8 +79,6 @@ public function form(array $form, FormStateInterface $form_state) {
         '#links' => $links,
       );
     }
-    // Sort the list so the output is ordered by weight.
-    uasort($form['shortcuts']['links'], array('\Drupal\Component\Utility\SortArray', 'sortByWeightProperty'));
     return $form;
   }
 
diff --git a/core/modules/shortcut/src/ShortcutSetInterface.php b/core/modules/shortcut/src/ShortcutSetInterface.php
index 21cc4f3..9d2f941 100644
--- a/core/modules/shortcut/src/ShortcutSetInterface.php
+++ b/core/modules/shortcut/src/ShortcutSetInterface.php
@@ -27,7 +27,7 @@
   public function resetLinkWeights();
 
   /**
-   * Returns all the shortcuts from a shortcut set.
+   * Returns all the shortcuts from a shortcut set sorted correctly.
    *
    * @return \Drupal\shortcut\ShortcutInterface[]
    *   An array of shortcut entities.
