diff --git a/core/modules/block/src/Controller/BlockLibraryController.php b/core/modules/block/src/Controller/BlockLibraryController.php
index 57862fc..4681c42 100644
--- a/core/modules/block/src/Controller/BlockLibraryController.php
+++ b/core/modules/block/src/Controller/BlockLibraryController.php
@@ -8,7 +8,6 @@
 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
 use Drupal\Core\Menu\LocalActionManagerInterface;
 use Drupal\Core\Plugin\Context\LazyContextRepository;
-use Drupal\Core\Routing\RedirectDestinationInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Url;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -48,13 +47,6 @@ class BlockLibraryController extends ControllerBase {
   protected $localActionManager;
 
   /**
-   * The redirect destination.
-   *
-   * @var \Drupal\Core\Routing\RedirectDestinationInterface
-   */
-  protected $redirectDestination;
-
-  /**
    * Constructs a BlockLibraryController object.
    *
    * @param \Drupal\Core\Block\BlockManagerInterface $block_manager
@@ -65,15 +57,12 @@ class BlockLibraryController extends ControllerBase {
    *   The current route match.
    * @param \Drupal\Core\Menu\LocalActionManagerInterface $local_action_manager
    *   The local action manager.
-   * @param \Drupal\Core\Routing\RedirectDestinationInterface $redirect_destination
-   *   The redirect destination.
    */
-  public function __construct(BlockManagerInterface $block_manager, LazyContextRepository $context_repository, RouteMatchInterface $route_match, LocalActionManagerInterface $local_action_manager, RedirectDestinationInterface $redirect_destination) {
+  public function __construct(BlockManagerInterface $block_manager, LazyContextRepository $context_repository, RouteMatchInterface $route_match, LocalActionManagerInterface $local_action_manager) {
     $this->blockManager = $block_manager;
     $this->routeMatch = $route_match;
     $this->localActionManager = $local_action_manager;
     $this->contextRepository = $context_repository;
-    $this->redirectDestination = $redirect_destination;
   }
 
   /**
@@ -84,8 +73,7 @@ public static function create(ContainerInterface $container) {
       $container->get('plugin.manager.block'),
       $container->get('context.repository'),
       $container->get('current_route_match'),
-      $container->get('plugin.manager.menu.local_action'),
-      $container->get('redirect.destination')
+      $container->get('plugin.manager.menu.local_action')
     );
   }
 
@@ -120,6 +108,8 @@ public function listBlocks(Request $request, $theme) {
 
     $region = $request->query->get('region');
     $weight = $request->query->get('weight');
+    $destination = $request->query->get('destination');
+
     $rows = [];
     foreach ($definitions as $plugin_id => $plugin_definition) {
       $row = [];
@@ -148,7 +138,6 @@ public function listBlocks(Request $request, $theme) {
       if (isset($weight)) {
         $links['add']['query']['weight'] = $weight;
       }
-      $destination = $this->redirectDestination->get();
       if ($destination) {
         $links['add']['query']['destination'] = $destination;
       }
diff --git a/core/modules/block/src/Tests/BlockTest.php b/core/modules/block/src/Tests/BlockTest.php
index f5924ca..86c0e5a 100644
--- a/core/modules/block/src/Tests/BlockTest.php
+++ b/core/modules/block/src/Tests/BlockTest.php
@@ -169,6 +169,41 @@ public function testAddBlockFromLibrary() {
     /** @var \Drupal\block\BlockInterface $block */
     $block = Block::load($block_id);
     $this->assertEqual($title, $block->label(), 'Found the block with expected title.');
+
+    // Ensures that if destination query string is not present you are
+    // redirected by default to the block list page.
+    $options = [
+      'query' => [
+        'region' => 'sidebar_first',
+      ],
+    ];
+    $this->drupalGet(Url::fromRoute('block.admin_library', ['theme' => $default_theme], $options));
+
+    $block_name = 'system_powered_by_block';
+    $add_url = Url::fromRoute('block.admin_add', ['plugin_id' => $block_name, 'theme' => $default_theme]);
+    $links = $this->xpath('//a[contains(@href, :href)]', [':href' => $add_url->toString()]);
+    $this->assertEqual(1, count($links), 'Found one matching link');
+
+    // Create a random title for the block.
+    $block_id = strtolower($this->randomMachineName(8));
+    $title = $this->randomMachineName(8);
+    $edit = [
+      'id' => $block_id,
+      'settings[label]' => $title,
+    ];
+    // Create the block using the link parsed from the library page.
+    $this->drupalPostForm($this->getAbsoluteUrl($links[0]['href']), $edit, t('Save block'));
+
+    // Ensure that the block was created.
+    $block = Block::load($block_id);
+    $this->assertEqual($title, $block->label(), 'Found the block with expected title.');
+
+    $expected_url = Url::fromRoute('block.admin_display_theme', ['theme' => $default_theme], [
+      'query' => [
+        'block-placement' => Html::getClass($block_id)
+      ],
+    ]);
+    $this->assertUrl($expected_url);
   }
 
   /**
