diff --git a/core/modules/views/views.theme.inc b/core/modules/views/views.theme.inc
index 81df6a1..b133f92 100644
--- a/core/modules/views/views.theme.inc
+++ b/core/modules/views/views.theme.inc
@@ -41,6 +41,10 @@ function template_preprocess_views_view(&$variables) {
     $variables['attributes']['class'][] = $variables['css_class'];
   }
 
+  // @todo: Figure out whether this belongs into views_ui_preprocess_views_view.
+  // Render title for the admin preview.
+  $variables['title'] = !empty($view->live_preview) ? Xss::filterAdmin($view->getTitle()) : '';
+
   // Add contextual links to the view. We need to attach them to the dummy
   // $view_array variable, since contextual_preprocess() requires that they be
   // attached to an array (not an object) in order to process them. For our
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 3960294..c9f6839 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -132,11 +132,6 @@ function views_ui_theme() {
 function views_ui_preprocess_views_view(&$variables) {
   $view = $variables['view'];
 
-  // Render title for the admin preview.
-  if (!empty($view->live_preview)) {
-    $variables['title'] = Xss::filterAdmin($view->getTitle());
-  }
-
   if (!empty($view->live_preview) && \Drupal::moduleHandler()->moduleExists('contextual')) {
     $view->setShowAdminLinks(FALSE);
     foreach (array('title', 'header', 'exposed', 'rows', 'pager', 'more', 'footer', 'empty', 'attachment_after', 'attachment_before') as $section) {
