diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 3e74521..9e5cd73 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1237,11 +1237,11 @@ function template_preprocess_html(&$variables) {
   // Construct page title.
   if (isset($variables['page']['#title']) && is_array($variables['page']['#title'])) {
     // Do an early render if the title is a render array.
-    $variables['page']['#title'] = (string) \Drupal::service('renderer')->render($variables['page']['#title']);
+    $variables['page']['#title'] = \Drupal::service('renderer')->render($variables['page']['#title']);
   }
   if (!empty($variables['page']['#title'])) {
     $head_title = array(
-      'title' => trim(strip_tags($variables['page']['#title'])),
+      'title' => trim(strip_tags((string) $variables['page']['#title'])),
       'name' => $site_config->get('name'),
     );
   }
diff --git a/core/modules/node/src/Tests/Views/FrontPageTest.php b/core/modules/node/src/Tests/Views/FrontPageTest.php
index ba8438f..0440a8c 100644
--- a/core/modules/node/src/Tests/Views/FrontPageTest.php
+++ b/core/modules/node/src/Tests/Views/FrontPageTest.php
@@ -55,7 +55,7 @@ protected function setUp() {
    * Tests the frontpage.
    */
   public function testFrontPage() {
-    $site_name = $this->randomMachineName();
+    $site_name = $this->randomMachineName() . '&' . $this->randomMachineName();
     $this->config('system.site')
       ->set('name', $site_name)
       ->save();
@@ -79,7 +79,8 @@ public function testFrontPage() {
     $this->executeView($view);
     $view->preview();
 
-    $this->assertEqual($view->getTitle(), format_string('Welcome to @site_name', array('@site_name' => $site_name)), 'The welcome title is used for the empty view.');
+    $frontpage_title = 'Welcome to ' . $site_name;
+    $this->assertEqual($view->getTitle(), $frontpage_title, 'The welcome title is used for the empty view.');
     $view->destroy();
 
     // Create some nodes on the frontpage view. Add more than 10 nodes in order
@@ -151,6 +152,9 @@ public function testFrontPage() {
     $this->assertIdenticalResultset($view, array_slice($expected, 10, 10), $column_map, 'Ensure that the right nodes are displayed on second page of the frontpage.');
     $this->assertNotInResultSet($view, $not_expected_nids, 'Ensure no unexpected node is in the result.');
     $view->destroy();
+    $this->drupalGet('node');
+    $this->assertRaw(str_replace('&', '&amp;', $frontpage_title), 'Frontpage title is escaped correctly.');
+    $this->assertNoRaw(str_replace('&', '&amp;amp;', $frontpage_title), 'Frontpage title is not double escaped.');
   }
 
   /**
diff --git a/core/modules/views/src/Plugin/views/area/Title.php b/core/modules/views/src/Plugin/views/area/Title.php
index 7827b62..2157d71 100644
--- a/core/modules/views/src/Plugin/views/area/Title.php
+++ b/core/modules/views/src/Plugin/views/area/Title.php
@@ -52,8 +52,7 @@ public function preRender(array $results) {
 
     // If a title is provided, process it.
     if (!empty($this->options['title'])) {
-      $value = $this->globalTokenReplace($this->options['title']);
-      $this->view->setTitle($this->sanitizeValue($value, 'xss_admin'));
+      $this->view->setTitle($this->globalTokenReplace($this->options['title'], ['sanitize' => FALSE]));
     }
   }
 
diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
index ccfd1ba..f21e017 100644
--- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php
+++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
@@ -240,11 +240,6 @@ public function tokenizeValue($value, $row_index) {
 
       $value = $this->viewsTokenReplace($value, $tokens);
     }
-    else {
-      // ::viewsTokenReplace() will run Xss::filterAdmin on the
-      // resulting string. We do the same here for consistency.
-      $value = Xss::filterAdmin($value);
-    }
     return $value;
   }
 
diff --git a/core/modules/views_ui/src/ViewUI.php b/core/modules/views_ui/src/ViewUI.php
index 8168bf2..720ca83 100644
--- a/core/modules/views_ui/src/ViewUI.php
+++ b/core/modules/views_ui/src/ViewUI.php
@@ -716,7 +716,7 @@ public function renderPreview($display_id, $args = array()) {
                   '#template' => "<strong>{% trans 'Title' %}</strong>",
                 ),
               ),
-              Xss::filterAdmin($executable->getTitle()),
+              $executable->getTitle(),
             );
             if (isset($path)) {
               // @todo Views should expect and store a leading /. See:
