diff --git a/core/modules/views_ui/templates/views-ui-view-preview-section.html.twig b/core/modules/views_ui/templates/views-ui-view-preview-section.html.twig
new file mode 100644
index 0000000..d30cb5c
--- /dev/null
+++ b/core/modules/views_ui/templates/views-ui-view-preview-section.html.twig
@@ -0,0 +1,21 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a Views UI preview section.
+ *
+ * Available variables:
+ * - title: The human readable section title.
+ * - links: A list of contextual links.
+ * - content: The content for this section preview.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_views_ui_view_preview_section()
+ *
+ * @ingroup themeable
+ */
+#}
+<h1 class="section-title">{{ title }}</h1>
+{% if links %}
+  <div class="contextual">{{ links }}</div>
+{% endif %}
+<div class="preview-section">{{ content }}</div>
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 21fdabe..2f63879 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -174,6 +174,7 @@ function views_ui_theme() {
     'views_ui_view_preview_section' => array(
       'variables' => array('view' => NULL, 'section' => NULL, 'content' => NULL, 'links' => ''),
       'file' => 'views_ui.theme.inc',
+      'template' => 'views-ui-view-preview-section',
     ),
 
     // Generic container wrapper, to use instead of theme_container when an id
diff --git a/core/modules/views_ui/views_ui.theme.inc b/core/modules/views_ui/views_ui.theme.inc
index 1980149..de05a97 100644
--- a/core/modules/views_ui/views_ui.theme.inc
+++ b/core/modules/views_ui/views_ui.theme.inc
@@ -391,7 +391,14 @@ function theme_views_ui_style_plugin_table($variables) {
 }
 
 /**
- * Theme preprocess for theme_views_ui_view_preview_section().
+ * Prepares variables for Views UI view preview section templates.
+ *
+ * Default template: views-ui-view-preview-section.html.twig.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - view: The View object.
+ *   - section: The section name of a View (e.g. title, rows or pager).
  */
 function template_preprocess_views_ui_view_preview_section(&$vars) {
   switch ($vars['section']) {
@@ -441,8 +448,6 @@ function template_preprocess_views_ui_view_preview_section(&$vars) {
 
   if (isset($links)) {
     $build = array(
-      '#prefix' => '<div class="contextual">',
-      '#suffix' => '</div>',
       '#theme' => 'links__contextual',
       '#links' => $links,
       '#attributes' => array('class' => array('contextual-links')),
@@ -450,7 +455,7 @@ function template_preprocess_views_ui_view_preview_section(&$vars) {
         'library' => array(array('contextual', 'drupal.contextual-links')),
       ),
     );
-    $vars['links'] = drupal_render($build);
+    $vars['links'] = $build;
   }
   $vars['theme_hook_suggestions'][] = 'views_ui_view_preview_section__' . $vars['section'];
 }
@@ -461,5 +466,5 @@ function template_preprocess_views_ui_view_preview_section(&$vars) {
 function theme_views_ui_view_preview_section($vars) {
   return '<h1 class="section-title">' . $vars['title'] . '</h1>'
   . $vars['links']
-  . '<div class="preview-section">'. drupal_render($vars['content']) . '</div>';
+  . '<div class="preview-section">'. $vars['content'] . '</div>';
 }
