diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index 3cae04532e..0f567dca8b 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -300,8 +300,8 @@ function template_preprocess_color_scheme_form(&$variables) {
   }
 
   // Attempt to load preview HTML if the theme provides it.
-  $preview_html_path = \Drupal::root() . '/' . (isset($info['preview_html']) ? drupal_get_path('theme', $theme) . '/' . $info['preview_html'] : drupal_get_path('module', 'color') . '/preview.html');
-  $variables['html_preview']['#markup'] = file_get_contents($preview_html_path);
+  $preview_html_path = isset($info['preview_html']) ? drupal_get_path('theme', $theme) . '/' . $info['preview_html'] : drupal_get_path('module', 'color') . '/preview.html.twig';
+  $variables['html_preview']['#markup'] = \Drupal::service('twig')->loadTemplate($preview_html_path, NULL)->render(array());
 }
 
 /**
diff --git a/core/modules/color/preview.html b/core/modules/color/preview.html
deleted file mode 100644
index d89edcb0d0..0000000000
--- a/core/modules/color/preview.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="color-preview">
-  <div id="text">
-    <h2>Lorem ipsum dolor</h2>
-    <p>Sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud <a href="#">exercitation ullamco</a> laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
-  </div>
-  <div id="img"></div>
-</div>
diff --git a/core/modules/color/preview.html.twig b/core/modules/color/preview.html.twig
new file mode 100644
index 0000000000..6ab518d0a7
--- /dev/null
+++ b/core/modules/color/preview.html.twig
@@ -0,0 +1,11 @@
+<div class="color-preview">
+  <div id="text">
+    <h2>
+      {% trans %} Example heading {% endtrans %}
+    </h2>
+    <p>
+      {% trans %} This is a block of example content. This content is here to demonstrate what actual content would look like in the color scheme you configure. <a href="#">This is an example link</a>, is is here to demonstrate how background colors you configure may affect the readability of links. This is some more text to demonstrate what actual content would look like in the color scheme you configure. {% endtrans %}
+    </p>
+  </div>
+  <div id="img"></div>
+</div>
diff --git a/core/modules/contact/src/MessageViewBuilder.php b/core/modules/contact/src/MessageViewBuilder.php
index 3024f62912..ffdb0bdd89 100644
--- a/core/modules/contact/src/MessageViewBuilder.php
+++ b/core/modules/contact/src/MessageViewBuilder.php
@@ -26,25 +26,6 @@ protected function getBuildDefaults(EntityInterface $entity, $view_mode) {
   /**
    * {@inheritdoc}
    */
-  public function buildComponents(array &$build, array $entities, array $displays, $view_mode) {
-    parent::buildComponents($build, $entities, $displays, $view_mode);
-
-    foreach ($entities as $id => $entity) {
-      // Add the message extra field, if enabled.
-      $display = $displays[$entity->bundle()];
-      if ($entity->getMessage() && $display->getComponent('message')) {
-        $build[$id]['message'] = array(
-          '#type' => 'item',
-          '#title' => t('Message'),
-          '#plain_text' => $entity->getMessage(),
-        );
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
     $build = parent::view($entity, $view_mode, $langcode);
 
diff --git a/core/modules/contact/src/Tests/ContactSitewideTest.php b/core/modules/contact/src/Tests/ContactSitewideTest.php
index ffc2e9091c..9ffd3af43c 100644
--- a/core/modules/contact/src/Tests/ContactSitewideTest.php
+++ b/core/modules/contact/src/Tests/ContactSitewideTest.php
@@ -49,6 +49,7 @@ function testSiteWideContact() {
       'administer contact forms',
       'administer users',
       'administer account settings',
+      'administer contact_message display',
       'administer contact_message fields',
       'administer contact_message form display',
     ]);
@@ -293,11 +294,11 @@ function testSiteWideContact() {
     $this->assertText($field_label);
 
     // Submit the contact form and verify the content.
-    $edit = array(
+    $edit = [
       'subject[0][value]' => $this->randomMachineName(),
       'message[0][value]' => $this->randomMachineName(),
       $field_name . '[0][value]' => $this->randomMachineName(),
-    );
+    ];
     $this->drupalPostForm(NULL, $edit, t('Send message'));
     $mails = $this->drupalGetMails();
     $mail = array_pop($mails);
@@ -315,11 +316,11 @@ function testSiteWideContact() {
     $this->drupalGet('contact/' . $contact_form);
 
     // Submit the contact form and verify the content.
-    $edit = array(
+    $edit = [
       'subject[0][value]' => $this->randomMachineName(),
       'message[0][value]' => $this->randomMachineName(),
       $field_name . '[0][value]' => $this->randomMachineName(),
-    );
+    ];
     $this->drupalPostForm(NULL, $edit, t('Send message'));
     $this->assertText('Thanks for your submission.');
     $this->assertUrl('user/' . $admin_user->id());
@@ -335,15 +336,41 @@ function testSiteWideContact() {
     $this->drupalGet('contact/' . $contact_form);
 
     // Submit the contact form and verify the content.
-    $edit = array(
+    $edit = [
       'subject[0][value]' => $this->randomMachineName(),
       'message[0][value]' => $this->randomMachineName(),
       $field_name . '[0][value]' => $this->randomMachineName(),
-    );
+    ];
     $this->drupalPostForm(NULL, $edit, t('Send message'));
     $result = $this->xpath('//div[@role=:role]', array(':role' => 'contentinfo'));
     $this->assertEqual(count($result), 0, 'Messages not found.');
     $this->assertUrl('user/' . $admin_user->id());
+
+    // Test preview and visibility of the message field and label.
+    // Submit the contact form and verify the content.
+    $edit = [
+      'subject[0][value]' => $this->randomMachineName(),
+      'message[0][value]' => $this->randomMachineName(),
+      $field_name . '[0][value]' => $this->randomMachineName(),
+    ];
+    $this->drupalPostForm('contact/' . $contact_form, $edit, t('Preview'));
+    // Message is now by default displayed twice, once for the form element and
+    // once for the viewed message.
+    $this->assertNoUniqueText(t('Message'));
+    $this->assertRaw('class="field field--name-message field--type-string-long field--label-above');
+    $this->assertText($edit['message[0][value]']);
+
+    // Hide the message field label.
+    $display_edit = [
+      'fields[message][label]' => 'hidden',
+    ];
+    $this->drupalPostForm('admin/structure/contact/manage/' . $contact_form . '/display', $display_edit, t('Save'));
+
+    $this->drupalPostForm($form->toUrl() . $contact_form, $edit, t('Preview'));
+    // Message should only be displayed once now.
+    $this->assertUniqueText(t('Message'));
+    $this->assertRaw('class="field field--name-message field--type-string-long field--label-hidden field__item">');
+    $this->assertText($edit['message[0][value]']);
   }
 
   /**
diff --git a/core/themes/bartik/color/color.inc b/core/themes/bartik/color/color.inc
index 4f42620d9c..a25f36c3f4 100644
--- a/core/themes/bartik/color/color.inc
+++ b/core/themes/bartik/color/color.inc
@@ -116,7 +116,7 @@
 
   // Preview files.
   'preview_library' => 'bartik/color.preview',
-  'preview_html' => 'color/preview.html',
+  'preview_html' => 'color/preview.html.twig',
 
   // Attachments.
   '#attached' => [
diff --git a/core/themes/bartik/color/preview.html b/core/themes/bartik/color/preview.html
deleted file mode 100644
index 7031b08945..0000000000
--- a/core/themes/bartik/color/preview.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<div class="color-preview">
-
-  <div class="color-preview-header">
-    <div class="color-preview-logo"><img src="../../../core/themes/bartik/logo.svg" alt="Site Logo" /></div>
-    <div class="color-preview-site-name">Bartik</div>
-    <div class="color-preview-main-menu">
-      <ul class="color-preview-main-menu-links">
-        <li><a>Home</a></li>
-        <li><a>Te Quidne</a></li>
-        <li><a>Vel Torqueo Quae Erat</a></li>
-      </ul>
-    </div>
-  </div>
-
-  <div class="color-preview-main clearfix">
-    <div class="color-preview-sidebar">
-      <div class="color-preview-block preview-block">
-        <h2>Etiam est risus</h2>
-        <div class="preview-content">
-          Maecenas id porttitor Ut enim ad minim veniam, quis nostrudfelis.
-          Laboris nisi ut aliquip ex ea.
-        </div>
-      </div>
-    </div>
-    <div class="color-preview-content">
-      <h1 class="color-preview-page-title">Lorem ipsum dolor</h1>
-      <div class="color-preview-node">
-        <div class="preview-content">
-          Sit amet, <a>consectetur adipisicing elit</a>, sed do eiusmod tempor
-          incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
-          nostrud <a>exercitation ullamco</a> laboris nisi ut aliquip ex ea
-          commodo consequat. Maecenas id porttitor Ut enim ad minim veniam, quis nostr udfelis.
-        </div>
-      </div>
-    </div>
-  </div>
-
-  <div class="color-preview-footer-wrapper">
-    <div class="color-preview-footer-columns clearfix">
-      <div class="preview-footer-column">
-        <div class="preview-block">
-          <h2>Etiam est risus</h2>
-          <div class="content">
-            Maecenas id porttitor Ut enim ad minim veniam, quis nostrudfelis.
-            Laboris nisi ut aliquip ex ea.
-          </div>
-        </div>
-      </div>
-      <div class="preview-footer-column">
-        <div class="preview-block preview-block-menu">
-          <h2>Erisus dolor</h2>
-          <div class="preview-content">
-            <ul>
-              <li><a>Donec placerat</a></li>
-              <li><a>Nullam nibh dolor</a></li>
-              <li><a>Blandit sed</a></li>
-              <li><a>Fermentum id</a></li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-</div>
diff --git a/core/themes/bartik/color/preview.html.twig b/core/themes/bartik/color/preview.html.twig
new file mode 100644
index 0000000000..59857fe336
--- /dev/null
+++ b/core/themes/bartik/color/preview.html.twig
@@ -0,0 +1,67 @@
+<div class="color-preview">
+
+  <div class="color-preview-header">
+    <div class="color-preview-logo"><img src="../../../core/themes/bartik/logo.svg" alt="Site Logo" /></div>
+    <div class="color-preview-site-name">{% trans %} Bartik {% endtrans %}</div>
+    <div class="color-preview-main-menu">
+      <ul class="color-preview-main-menu-links">
+        <li><a>{% trans %} The first tab {% endtrans %}</a></li>
+        <li><a>{% trans %} Another tab {% endtrans %}</a></li>
+        <li><a>{% trans %} The last tab {% endtrans %}</a></li>
+      </ul>
+    </div>
+  </div>
+
+  <div class="color-preview-main clearfix">
+    <div class="color-preview-sidebar">
+      <div class="color-preview-block preview-block">
+        <h2>{% trans %} Example heading {% endtrans %}</h2>
+        <div class="preview-content">
+          {% trans %} This is a block of example content. This content is here to demonstrate what actual content would look like
+          in the color scheme you configure. {% endtrans %}
+        </div>
+      </div>
+    </div>
+    <div class="color-preview-content">
+      <h1 class="color-preview-page-title">{% trans %} This is an example heading {% endtrans %}</h1>
+      <div class="color-preview-node">
+        <div class="preview-content">
+          {% trans %} This is a block of example content. This content is here to demonstrate what actual content would look like
+          in the color scheme you configure. <a href="#">This is an example link</a>, is here to demonstrate
+          how background colors you configure may affect the readability of links. This is another sentence to demonstrate
+          what actual content would look like in the color scheme you configure. <a href="#">This is another example link.</a>
+          This is the end of this block of example content. {% endtrans %}
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <div class="color-preview-footer-wrapper">
+    <div class="color-preview-footer-columns clearfix">
+      <div class="preview-footer-column">
+        <div class="preview-block">
+          <h2>{% trans %} Example heading {% endtrans %}</h2>
+          <div class="content">
+            {% trans %} This is a block of example content. This content is here
+            to demonstrate what actual content would look like
+            in the color scheme you configure. {% endtrans %}
+          </div>
+        </div>
+      </div>
+      <div class="preview-footer-column">
+        <div class="preview-block preview-block-menu">
+          <h2>{% trans %} Example heading {% endtrans %}</h2>
+          <div class="preview-content">
+            <ul>
+              <li><a>{% trans %} One footer link {% endtrans %}</a></li>
+              <li><a>{% trans %} Another footer link {% endtrans %}</a></li>
+              <li><a>{% trans %} A third footer link {% endtrans %}</a></li>
+              <li><a>{% trans %} The Last footer link {% endtrans %}</a></li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+
+</div>
