diff --git a/core/modules/block/block.module b/core/modules/block/block.module
index 7862e66..88f29de 100644
--- a/core/modules/block/block.module
+++ b/core/modules/block/block.module
@@ -41,10 +41,7 @@ function block_help($route_name, RouteMatchInterface $route_match) {
       return $output;
   }
   if ($route_name == 'block.admin_display' || $route_name == 'block.admin_display_theme') {
-    $demo_theme = $route_match->getParameter('theme') ?: \Drupal::config('system.theme')->get('default');
-    $themes = \Drupal::service('theme_handler')->listInfo();
     $output = '<p>' . t('This page provides a drag-and-drop interface for adding a block to a region, and for controlling the order of blocks within regions. To add a block to a region, or to configure its specific title and visibility settings, click the block title under <em>Place blocks</em>. Since not all themes implement the same regions, or display regions in the same way, blocks are positioned on a per-theme basis. Remember that your changes will not be saved until you click the <em>Save blocks</em> button at the bottom of the page.') . '</p>';
-    $output .= '<p>' . \Drupal::l(t('Demonstrate block regions (@theme)', array('@theme' => $themes[$demo_theme]->info['name'])), new Url('block.admin_demo', array('theme' => $demo_theme))) . '</p>';
     return $output;
   }
 }
diff --git a/core/modules/block/src/BlockListBuilder.php b/core/modules/block/src/BlockListBuilder.php
index 43d7a1c..5882289 100644
--- a/core/modules/block/src/BlockListBuilder.php
+++ b/core/modules/block/src/BlockListBuilder.php
@@ -17,7 +17,7 @@
 use Drupal\Core\Form\FormBuilderInterface;
 use Drupal\Core\Form\FormInterface;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Theme\ThemeManagerInterface;
+use Drupal\Core\Extension\ThemeHandlerInterface;
 use Drupal\Core\Url;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
@@ -44,11 +44,11 @@ class BlockListBuilder extends ConfigEntityListBuilder implements FormInterface
   protected $request;
 
   /**
-   * The theme manager.
+   * The theme handler.
    *
-   * @var \Drupal\Core\Theme\ThemeManagerInterface
+   * @var \Drupal\Core\Extension\ThemeHandlerInterface
    */
-  protected $themeManager;
+  protected $themeHandler;
 
   /**
    * The form builder.
@@ -69,15 +69,14 @@ class BlockListBuilder extends ConfigEntityListBuilder implements FormInterface
    *   The entity type definition.
    * @param \Drupal\Core\Entity\EntityStorageInterface $storage
    *   The entity storage class.
-   * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager
-   *   The theme manager.
+   * @param \Drupal\Core\Theme\ThemeHandlerInterface $theme_handler
+   *   The theme handler.
    * @param \Drupal\Core\Form\FormBuilderInterface $form_builder
    *   The form builder.
    */
-  public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, ThemeManagerInterface $theme_manager, FormBuilderInterface $form_builder) {
+  public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, ThemeHandlerInterface $theme_handler, FormBuilderInterface $form_builder) {
     parent::__construct($entity_type, $storage);
-
-    $this->themeManager = $theme_manager;
+    $this->themeHandler = $theme_handler;
     $this->formBuilder = $form_builder;
   }
 
@@ -88,7 +87,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
     return new static(
       $entity_type,
       $container->get('entity.manager')->getStorage($entity_type->id()),
-      $container->get('theme.manager'),
+      $container->get('theme_handler'),
       $container->get('form_builder')
     );
   }
@@ -128,6 +127,17 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     $form['#attached']['library'][] = 'block/drupal.block.admin';
     $form['#attributes']['class'][] = 'clearfix';
 
+    $theme = $this->getThemeName();
+    $theme_list = $this->themeHandler->listInfo();
+    $form['demo'] = array(
+      '#type' => 'link',
+      '#title' => $this->t('Demonstrate block regions (@theme)', ['@theme' => $theme_list[$theme]->info['name']]),
+      '#url' => Url::fromRoute('block.admin_demo', ['theme' => $theme]),
+      '#attributes' => [
+        'class' => 'button button--small',
+      ]
+    );
+
     // Build the form tree.
     $form['blocks'] = $this->buildBlocksForm();
 
@@ -317,7 +327,7 @@ protected function buildBlocksForm() {
   protected function getThemeName() {
     // If no theme was specified, use the current theme.
     if (!$this->theme) {
-      $this->theme = $this->themeManager->getActiveTheme()->getName();
+      $this->theme = $this->themeHandler->getDefault();
     }
     return $this->theme;
   }
diff --git a/core/modules/block/src/Tests/BlockUiTest.php b/core/modules/block/src/Tests/BlockUiTest.php
index 37fce6e..6140330 100644
--- a/core/modules/block/src/Tests/BlockUiTest.php
+++ b/core/modules/block/src/Tests/BlockUiTest.php
@@ -81,9 +81,11 @@ protected function setUp() {
    * Test block demo page exists and functions correctly.
    */
   public function testBlockDemoUiPage() {
-    $this->drupalPlaceBlock('help_block', array('region' => 'help'));
     $this->drupalGet('admin/structure/block');
+    // The demo link should be available even if the help module is disabled.
+    $this->assertFalse($this->xpath('//div[contains(@class, "region-help")]'), 'Help block is not shown.');
     $this->clickLink(t('Demonstrate block regions (@theme)', array('@theme' => 'Classy')));
+    $this->assertText(t('Classy'), 'Followed link to correct demonstration page.');
     $elements = $this->xpath('//div[contains(@class, "region-highlighted")]/div[contains(@class, "block-region") and contains(text(), :title)]', array(':title' => 'Highlighted'));
     $this->assertTrue(!empty($elements), 'Block demo regions are shown.');
   }
