diff --git a/core/lib/Drupal/Core/Page/DefaultHtmlFragmentRenderer.php b/core/lib/Drupal/Core/Page/DefaultHtmlFragmentRenderer.php
index 8de2067..18f21f9 100644
--- a/core/lib/Drupal/Core/Page/DefaultHtmlFragmentRenderer.php
+++ b/core/lib/Drupal/Core/Page/DefaultHtmlFragmentRenderer.php
@@ -36,6 +36,7 @@ public function __construct(LanguageManager $language_manager) {
    * {@inheritdoc}
    */
   public function render(HtmlFragment $fragment, $status_code = 200) {
+    global $theme;
     // Converts the given HTML fragment which represents the main content region
     // of the page into a render array.
     $page_content['main'] = array(
@@ -56,9 +57,7 @@ public function render(HtmlFragment $fragment, $status_code = 200) {
     $page->setContent(drupal_render($page_array));
     // Collect cache tags for all the content in all the regions on the page.
     $tags = $page_array['#cache']['tags'];
-    // Enforce the generic "content" cache tag on all pages.
-    // @todo Remove the "content" cache tag. @see https://drupal.org/node/2124957
-    $tags['content'] = TRUE;
+    $tags['theme'] = $theme;
     $page->setCacheTags($tags);
     $page->setStatusCode($status_code);
 
diff --git a/core/modules/block/lib/Drupal/block/Entity/Block.php b/core/modules/block/lib/Drupal/block/Entity/Block.php
index 9e17171..6baeebd 100644
--- a/core/modules/block/lib/Drupal/block/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Entity/Block.php
@@ -152,6 +152,7 @@ public function toArray() {
    * {@inheritdoc}
    */
   public function postSave(EntityStorageInterface $storage, $update = TRUE) {
+    global $theme;
     parent::postSave($storage, $update);
 
     if ($update) {
@@ -160,8 +161,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     // When placing a new block, invalidate all cache entries for this theme,
     // since any page that uses this theme might be affected.
     else {
-      // @todo Replace with theme cache tag: https://drupal.org/node/2185617
-      Cache::invalidateTags(array('content' => TRUE));
+      Cache::invalidateTags(array('theme' => $theme));
     }
   }
 
diff --git a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
index 4fa4e63..bee1a48 100644
--- a/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
+++ b/core/modules/block/lib/Drupal/block/Tests/BlockTest.php
@@ -285,9 +285,16 @@ public function testBlockCacheTags() {
       'block_view:1',
       'block:powered',
       'block_plugin:system_powered_by_block',
+      'theme:stark',
     );
     $this->assertIdentical($cache_entry->tags, $expected_cache_tags);
     $cache_entry = \Drupal::cache('render')->get('entity_view:block:powered:en:stark');
+    $expected_cache_tags = array(
+      'content:1',
+      'block_view:1',
+      'block:powered',
+      'block_plugin:system_powered_by_block',
+    );
     $this->assertIdentical($cache_entry->tags, $expected_cache_tags);
 
     // The "Powered by Drupal" block is modified; verify a cache miss.
@@ -317,6 +324,7 @@ public function testBlockCacheTags() {
       'block:powered-2',
       'block:powered',
       'block_plugin:system_powered_by_block',
+      'theme:stark',
     );
     $this->assertEqual($cache_entry->tags, $expected_cache_tags);
     $expected_cache_tags = array(
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuCacheTagsTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuCacheTagsTest.php
index e8f00a3..2b0dfcb 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuCacheTagsTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuCacheTagsTest.php
@@ -64,6 +64,7 @@ public function testMenuBlock() {
       'block:' . $block->id(),
       'block_plugin:system_menu_block__llama',
       'menu:llama',
+      'theme:stark',
     );
     $this->verifyPageCache($path, 'HIT', $expected_tags);
 
@@ -117,7 +118,7 @@ public function testMenuBlock() {
     $this->verifyPageCache($path, 'MISS');
 
     // Verify a cache hit.
-    $this->verifyPageCache($path, 'HIT', array('content:1'));
+    $this->verifyPageCache($path, 'HIT', array('theme:stark'));
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Bootstrap/PageCacheTest.php b/core/modules/system/lib/Drupal/system/Tests/Bootstrap/PageCacheTest.php
index 029bcb8..2d36baa 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Bootstrap/PageCacheTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Bootstrap/PageCacheTest.php
@@ -66,7 +66,7 @@ function testPageCacheTags() {
     $cid = sha1(implode(':', $cid_parts));
     $cache_entry = \Drupal::cache('render')->get($cid);
     sort($cache_entry->tags);
-    $this->assertIdentical($cache_entry->tags, array('content:1', 'pre_render:1', 'system_test_cache_tags_page:1'));
+    $this->assertIdentical($cache_entry->tags, array('pre_render:1', 'system_test_cache_tags_page:1', 'theme:stark'));
 
     Cache::invalidateTags($tags);
     $this->drupalGet($path);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Cache/PageCacheTagsIntegrationTest.php b/core/modules/system/lib/Drupal/system/Tests/Cache/PageCacheTagsIntegrationTest.php
index 7e9d1d5..4b39bcb 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Cache/PageCacheTagsIntegrationTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Cache/PageCacheTagsIntegrationTest.php
@@ -77,6 +77,7 @@ function testPageCacheTags() {
     // Full node page 1.
     $this->verifyPageCacheTags('node/' . $node_1->id(), array(
       'content:1',
+      'theme:bartik',
       'block_view:1',
       'block:bartik_content',
       'block:bartik_tools',
@@ -100,6 +101,7 @@ function testPageCacheTags() {
     // Full node page 2.
     $this->verifyPageCacheTags('node/' . $node_2->id(), array(
       'content:1',
+      'theme:bartik',
       'block_view:1',
       'block:bartik_content',
       'block:bartik_tools',
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCacheTagsTestBase.php
index e1f66b5..b6c25b1 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityCacheTagsTestBase.php
@@ -232,7 +232,7 @@ public function testReferencedEntity() {
     $this->verifyPageCache($referencing_entity_path, 'MISS');
 
     // Verify a cache hit, but also the presence of the correct cache tags.
-    $tags = array_merge(array('content:1'), $referencing_entity_cache_tags);
+    $tags = array_merge(array('theme:stark'), $referencing_entity_cache_tags);
     $this->verifyPageCache($referencing_entity_path, 'HIT', $tags);
 
     // Also verify the existence of an entity render cache entry.
@@ -245,7 +245,7 @@ public function testReferencedEntity() {
     $this->verifyPageCache($non_referencing_entity_path, 'MISS');
 
     // Verify a cache hit, but also the presence of the correct cache tags.
-    $tags = array_merge(array('content:1'), $non_referencing_entity_cache_tags);
+    $tags = array_merge(array('theme:stark'), $non_referencing_entity_cache_tags);
     $this->verifyPageCache($non_referencing_entity_path, 'HIT', $tags);
 
     // Also verify the existence of an entity render cache entry.
@@ -259,7 +259,7 @@ public function testReferencedEntity() {
     $this->verifyPageCache($listing_path, 'MISS');
 
     // Verify a cache hit, but also the presence of the correct cache tags.
-    $tags = array_merge(array('content:1'), $referencing_entity_cache_tags);
+    $tags = array_merge(array('theme:stark'), $referencing_entity_cache_tags);
     $this->verifyPageCache($listing_path, 'HIT', $tags);
 
 
@@ -408,12 +408,12 @@ public function testReferencedEntity() {
 
     // Verify cache hits.
     $tags = array(
-      'content:1',
       'entity_test_view:1',
       'entity_test:' . $this->referencing_entity->id(),
+      'theme:stark',
     );
     $this->verifyPageCache($referencing_entity_path, 'HIT', $tags);
-    $this->verifyPageCache($listing_path, 'HIT', array('content:1'));
+    $this->verifyPageCache($listing_path, 'HIT', array('theme:stark'));
   }
 
 }
