diff --git a/core/modules/user/lib/Drupal/user/ProfileForm.php b/core/modules/user/lib/Drupal/user/ProfileForm.php
index 6c52a27..38c4feb 100644
--- a/core/modules/user/lib/Drupal/user/ProfileForm.php
+++ b/core/modules/user/lib/Drupal/user/ProfileForm.php
@@ -30,15 +30,25 @@ public function __construct(EntityManagerInterface $entity_manager, LanguageMana
   protected function actions(array $form, array &$form_state) {
     $element = parent::actions($form, $form_state);
 
-    // The user account being edited.
-    $account = $this->entity;
-
-    // The user doing the editing.
-    $user = $this->currentUser();
-    $element['delete']['#type'] = 'submit';
-    $element['delete']['#value'] = $this->t('Cancel account');
-    $element['delete']['#submit'] = array(array($this, 'editCancelSubmit'));
-    $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users'));
+    // Users do not have a UI for the delete operation, but the cancel one,
+    // which additionally checks for authored content.
+    if (!$this->entity->isNew()) {
+      $route_info = $this->entity->urlInfo('cancel-form');
+      if ($this->getRequest()->query->has('destination')) {
+        $query = $route_info->getOption('query');
+        $query['destination'] = $this->getRequest()->query->get('destination');
+        $route_info->setOption('query', $query);
+      }
+      $element['delete'] = array(
+        '#type' => 'link',
+        '#title' => $this->t('Cancel account'),
+        '#access' => $this->entity->access('delete'),
+        '#attributes' => array(
+          'class' => array('button', 'button--danger'),
+        ),
+      );
+      $element['delete'] += $route_info->toRenderArray();
+    }
 
     return $element;
   }
@@ -58,22 +68,4 @@ public function save(array $form, array &$form_state) {
     drupal_set_message($this->t('The changes have been saved.'));
   }
 
-  /**
-   * Provides a submit handler for the 'Cancel account' button.
-   */
-  public function editCancelSubmit($form, &$form_state) {
-    $destination = array();
-    $query = $this->getRequest()->query;
-    if ($query->has('destination')) {
-      $destination = array('destination' => $query->get('destination'));
-      $query->remove('destination');
-    }
-    // We redirect from user/%/edit to user/%/cancel to make the tabs disappear.
-    $form_state['redirect_route'] = array(
-      'route_name' => 'user.cancel',
-      'route_parameters' => array('user' => $this->entity->id()),
-      'options' => array('query' => $destination),
-    );
-  }
-
 }
