diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 87b3b18..69494d5 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -22,8 +22,8 @@
 /**
  * @defgroup content_flags Content markers
  * @{
- * Markers used by theme_mark() and node_mark() to designate content.
- * @see theme_mark(), node_mark()
+ * Markers used by node_mark() to designate recent content.
+ * @see node_mark()
  */
 
 /**
@@ -2169,27 +2169,6 @@ function template_preprocess_tablesort_indicator(&$variables) {
 }
 
 /**
- * Returns HTML for a marker for new or updated content.
- *
- * @param $variables
- *   An associative array containing:
- *   - type: Number representing the marker type to display. See MARK_NEW,
- *     MARK_UPDATED, MARK_READ.
- */
-function theme_mark($variables) {
-  $type = $variables['status'];
-  global $user;
-  if ($user->isAuthenticated()) {
-    if ($type == MARK_NEW) {
-      return ' <span class="marker">' . t('new') . '</span>';
-    }
-    elseif ($type == MARK_UPDATED) {
-      return ' <span class="marker">' . t('updated') . '</span>';
-    }
-  }
-}
-
-/**
  * Preprocesses variables for theme_item_list().
  *
  * @param array $variables
@@ -3065,9 +3044,6 @@ function drupal_common_theme() {
       'variables' => array('style' => NULL),
       'template' => 'tablesort-indicator',
     ),
-    'mark' => array(
-      'variables' => array('status' => MARK_NEW),
-    ),
     'item_list' => array(
       'variables' => array('items' => array(), 'title' => '', 'list_type' => 'ul', 'attributes' => array()),
     ),
diff --git a/core/modules/comment/templates/comment.html.twig b/core/modules/comment/templates/comment.html.twig
index 11dab84..cdcf0c4 100644
--- a/core/modules/comment/templates/comment.html.twig
+++ b/core/modules/comment/templates/comment.html.twig
@@ -67,7 +67,7 @@
   {{ title_prefix }}
 
   {% if new %}
-    <mark class="new">{{ new }}</mark>
+    <mark class="mark--new">{{ new }}</mark>
   {% endif %}
 
   <h3{{ title_attributes }}>{{ title }}</h3>
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 03387f8..d9bda0d 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -237,17 +237,19 @@ function node_admin_nodes() {
   );
   foreach ($nodes as $node) {
     $l_options = $node->language()->id != Language::LANGCODE_NOT_SPECIFIED && isset($languages[$node->language()->id]) ? array('language' => $languages[$node->language()->id]) : array();
-    $mark = array(
-      '#theme' => 'mark',
-      '#status' => node_mark($node->id(), $node->getChangedTime()),
-    );
     $form['nodes'][$node->id()]['title'] = array(
       '#type' => 'link',
       '#title' => $node->label(),
       '#href' => 'node/' . $node->id(),
       '#options' => $l_options,
-      '#suffix' => ' ' . drupal_render($mark),
     );
+    $mark_type = node_mark($node->id(), $node->getChangedTime());
+    if ($mark_type == MARK_NEW) {
+      $form['nodes'][$node->id()]['title']['#suffix'] = ' <mark class="mark--new">' . t('new') . '</mark>';
+    }
+    elseif ($mark_type == MARK_UPDATED) {
+      $form['nodes'][$node->id()]['title']['#suffix'] = ' <mark class="mark--updated">' . t('updated') . '</mark>';
+    }
     $form['nodes'][$node->id()]['type'] = array(
       '#markup' => check_plain(node_get_type_label($node)),
     );
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 6d3708d..b5d3562 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1401,11 +1401,13 @@ function theme_node_recent_content($variables) {
 
   $output = '<div class="node-title">';
   $output .= l($node->label(), 'node/' . $node->id());
-  $mark = array(
-    '#theme' => 'mark',
-    '#status' => node_mark($node->id(), $node->getChangedTime()),
-  );
-  $output .= drupal_render($mark);
+  $mark_type = node_mark($node->id(), $node->getChangedTime());
+  if ($mark_type == MARK_NEW) {
+    $output .= ' <mark class="mark--new">' . t('new') . '</mark>';
+  }
+  elseif ($mark_type == MARK_UPDATED) {
+    $output .= ' <mark class="mark--updated">' . t('updated') . '</mark>';
+  }
   $output .= '</div><div class="node-author">';
   $username = array(
     '#theme' => 'username',
diff --git a/core/modules/system/css/system.theme.css b/core/modules/system/css/system.theme.css
index d3c52a3..7b5b95d 100644
--- a/core/modules/system/css/system.theme.css
+++ b/core/modules/system/css/system.theme.css
@@ -81,7 +81,12 @@ input.form-checkbox,
 input.form-radio {
   vertical-align: middle;
 }
-.marker,
+.mark--new,
+.mark--updated,
+.mark--outdated {
+  background-color: transparent;
+  color: #e00;
+}
 .form-required {
   color: #e00;
 }
diff --git a/core/modules/tracker/tracker.pages.inc b/core/modules/tracker/tracker.pages.inc
index 8e187ef..9d426e1 100644
--- a/core/modules/tracker/tracker.pages.inc
+++ b/core/modules/tracker/tracker.pages.inc
@@ -74,19 +74,22 @@ function tracker_page($account = NULL, $set_title = FALSE) {
         }
       }
 
-      $mark_build = array(
-        '#theme' => 'mark',
-        '#status' => node_mark($node->id(), $node->getChangedTime()),
-      );
-
       $row = array(
         'type' => check_plain(node_get_type_label($node)),
-        'title' => array('data' => l($node->getTitle(), 'node/' . $node->id()) . ' ' . drupal_render($mark_build)),
+        'title' => array('data' => l($node->getTitle(), 'node/' . $node->id())),
         'author' => array('data' => array('#theme' => 'username', '#account' => $node->getAuthor())),
         'replies' => array('class' => array('replies'), 'data' => $comments),
         'last updated' => array('data' => t('!time ago', array('!time' => format_interval(REQUEST_TIME - $node->last_activity)))),
       );
 
+      $mark_type = node_mark($node->id(), $node->getChangedTime());
+      if ($mark_type == MARK_NEW) {
+        $row['title']['data'] .= ' <mark class="mark--new">' . t('new') . '</mark>';
+      }
+      elseif ($mark_type == MARK_UPDATED) {
+        $row['title']['data'] .= ' <mark class="mark--updated">' . t('updated') . '</mark>';
+      }
+
       // Adds extra RDFa markup to the $row array if the RDF module is enabled.
       if (module_exists('rdf')) {
         $mapping = rdf_get_mapping('node', $node->getType());
diff --git a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
index 072b3df..4f3c179 100644
--- a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
+++ b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
@@ -125,7 +125,7 @@ function testContentTranslation() {
 
     // Check to make sure that interface shows translation as outdated.
     $this->drupalGet('node/' . $node->id() . '/translate');
-    $this->assertRaw('<span class="marker">' . t('outdated') . '</span>', 'Translation marked as outdated.');
+    $this->assertRaw('<mark class="mark--outdated">' . t('outdated') . '</mark>', 'Translation marked as outdated.');
 
     // Update translation and mark as updated.
     $edit = array();
diff --git a/core/modules/translation/translation.pages.inc b/core/modules/translation/translation.pages.inc
index b5ec442..99e873b 100644
--- a/core/modules/translation/translation.pages.inc
+++ b/core/modules/translation/translation.pages.inc
@@ -57,7 +57,7 @@ function translation_node_overview(EntityInterface $node) {
         }
       }
       $status = $translation_node->isPublished() ? t('Published') : t('Not published');
-      $status .= $translation_node->translate->value ? ' - <span class="marker">' . t('outdated') . '</span>' : '';
+      $status .= $translation_node->translate->value ? ' - <mark class="mark--outdated">' . t('outdated') . '</mark>' : '';
       if ($translation_node->id() == $tnid) {
         $language_name = t('<strong>@language_name</strong> (source)', array('@language_name' => $language_name));
       }
