diff --git a/core/modules/aggregator/aggregator.info b/core/modules/aggregator/aggregator.info
index 5954a87..66e1e51 100644
--- a/core/modules/aggregator/aggregator.info
+++ b/core/modules/aggregator/aggregator.info
@@ -4,5 +4,4 @@ package = Core
 version = VERSION
 core = 8.x
 configure = admin/config/services/aggregator/settings
-stylesheets[all][] = aggregator.theme.css
 dependencies[] = file
diff --git a/core/modules/aggregator/aggregator.pages.inc b/core/modules/aggregator/aggregator.pages.inc
index 0c04c7d..fb1f520 100644
--- a/core/modules/aggregator/aggregator.pages.inc
+++ b/core/modules/aggregator/aggregator.pages.inc
@@ -310,6 +310,7 @@ function theme_aggregator_summary_item($variables) {
  * @see aggregator-wrapper.tpl.php
  */
 function template_preprocess_aggregator_wrapper(&$variables) {
+  drupal_add_css(drupal_get_path('module', 'aggregator') . '/aggregator.theme.css');
   $variables['pager'] = theme('pager');
 }
 
diff --git a/core/modules/book/book.info b/core/modules/book/book.info
index 1f2be6f..b42a72b 100644
--- a/core/modules/book/book.info
+++ b/core/modules/book/book.info
@@ -5,4 +5,3 @@ version = VERSION
 core = 8.x
 dependencies[] = node
 configure = admin/content/book/settings
-stylesheets[all][] = book.theme.css
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index f606e48..4e15fb3 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -1082,6 +1082,7 @@ function template_preprocess_book_all_books_block(&$variables) {
  * @see book-navigation.tpl.php
  */
 function template_preprocess_book_navigation(&$variables) {
+  drupal_add_css(drupal_get_path('module', 'book') . '/book.theme.css');
   $book_link = $variables['book_link'];
 
   // Provide extra variables for themers. Not needed by default.
diff --git a/core/modules/comment/comment.info b/core/modules/comment/comment.info
index 6028bda..340df76 100644
--- a/core/modules/comment/comment.info
+++ b/core/modules/comment/comment.info
@@ -6,4 +6,3 @@ core = 8.x
 dependencies[] = node
 dependencies[] = text
 configure = admin/content/comment
-stylesheets[all][] = comment.theme.css
diff --git a/core/modules/comment/lib/Drupal/comment/CommentRenderController.php b/core/modules/comment/lib/Drupal/comment/CommentRenderController.php
index bc21cd2..88e5ba1 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentRenderController.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentRenderController.php
@@ -72,6 +72,7 @@ protected function alterBuild(array &$build, EntityInterface $comment, $view_mod
 
       // Add indentation div or close open divs as needed.
       if ($is_threaded) {
+        $build['#attached']['css'][] = drupal_get_path('module', 'comment') . '/comment.theme.css';
         $prefix .= $comment->divs <= 0 ? str_repeat('</div>', abs($comment->divs)) : "\n" . '<div class="indented">';
       }
 
diff --git a/core/modules/field/field.info b/core/modules/field/field.info
index 88529e2..c74da0e 100644
--- a/core/modules/field/field.info
+++ b/core/modules/field/field.info
@@ -5,4 +5,3 @@ version = VERSION
 core = 8.x
 dependencies[] = field_sql_storage
 required = TRUE
-stylesheets[all][] = theme/field.css
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index 686e3f5..1af0b40 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -1099,6 +1099,14 @@ function field_extract_bundle($entity_type, $bundle) {
 }
 
 /**
+ * Implements hook_page_build().
+ */
+function field_page_build(&$page) {
+  $path = drupal_get_path('module', 'field');
+  $page['#attached']['css'][$path . '/theme/field.css'] = array('every_page' => TRUE);
+}
+
+/**
  * Theme preprocess function for theme_field() and field.tpl.php.
  *
  * @see theme_field()
diff --git a/core/modules/forum/forum.info b/core/modules/forum/forum.info
index c348a2a..79317ea 100644
--- a/core/modules/forum/forum.info
+++ b/core/modules/forum/forum.info
@@ -8,4 +8,3 @@ package = Core
 version = VERSION
 core = 8.x
 configure = admin/structure/forum
-stylesheets[all][] = forum.css
diff --git a/core/modules/forum/forum.pages.inc b/core/modules/forum/forum.pages.inc
index 0f41bd3..b4a90ab 100644
--- a/core/modules/forum/forum.pages.inc
+++ b/core/modules/forum/forum.pages.inc
@@ -34,5 +34,18 @@ function forum_page($forum_term = NULL) {
     $topics = '';
   }
 
-  return theme('forums', array('forums' => $forum_term->forums, 'topics' => $topics, 'parents' => $forum_term->parents, 'tid' => $forum_term->tid, 'sortby' => $sortby, 'forums_per_page' => $forum_per_page));
+  $build = array(
+    '#theme' => 'forums',
+    '#forums' => $forum_term->forums,
+    '#topics' => $topics,
+    '#parents' => $forum_term->parents,
+    '#tid' => $forum_term->tid,
+    '#sortby' => $sortby,
+    '#forums_per_page' => $forum_per_page,
+  );
+  $build['#attached']['css'][] = drupal_get_path('module', 'forum') . '/forum.css';
+  // @todo Returning a render array causes template_preprocess_forums() to be
+  //   invoked too late and the breadcrumb is rendered before that callback
+  //   adjusted it.
+  return drupal_render($build);
 }
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
index 9bd703b..027bc00 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
@@ -579,7 +579,7 @@ private function verifyForumView($forum, $parent = NULL) {
     // View forum page.
     $this->drupalGet('forum/' . $forum['tid']);
     $this->assertResponse(200);
-    $this->assertTitle($forum['name'] . ' | Drupal', 'Forum name was displayed');
+    $this->assertTitle($forum['name'] . ' | Drupal');
 
     $breadcrumb = array(
       l(t('Home'), NULL),
@@ -589,7 +589,7 @@ private function verifyForumView($forum, $parent = NULL) {
       $breadcrumb[] = l($parent['name'], 'forum/' . $parent['tid']);
     }
 
-    $this->assertRaw(theme('breadcrumb', array('breadcrumb' => $breadcrumb)), 'Breadcrumbs were displayed');
+    $this->assertRaw(theme('breadcrumb', array('breadcrumb' => $breadcrumb)));
   }
 
   /**
diff --git a/core/modules/poll/poll.info b/core/modules/poll/poll.info
index 7cd674a..f6b5386 100644
--- a/core/modules/poll/poll.info
+++ b/core/modules/poll/poll.info
@@ -4,5 +4,3 @@ package = Core
 version = VERSION
 core = 8.x
 dependencies[] = node
-stylesheets[all][] = poll.base.css
-stylesheets[all][] = poll.theme.css
diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module
index 6573218..0a81e9e 100644
--- a/core/modules/poll/poll.module
+++ b/core/modules/poll/poll.module
@@ -119,6 +119,15 @@ function _poll_menu_access($node, $perm, $inspect_allowvotes) {
 }
 
 /**
+ * Implements hook_page_build().
+ */
+function poll_page_build(&$page) {
+  $path = drupal_get_path('module', 'poll');
+  $page['#attached']['css'][$path . '/poll.base.css'] = array('every_page' => TRUE);
+  $page['#attached']['css'][$path . '/poll.theme.css'] = array('every_page' => TRUE);
+}
+
+/**
  * Implements hook_block_info().
  */
 function poll_block_info() {
diff --git a/core/modules/search/search.info b/core/modules/search/search.info
index 8fdbfaa..768b861 100644
--- a/core/modules/search/search.info
+++ b/core/modules/search/search.info
@@ -4,4 +4,3 @@ package = Core
 version = VERSION
 core = 8.x
 configure = admin/config/search/settings
-stylesheets[all][] = search.theme.css
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/CascadingStylesheetsTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/CascadingStylesheetsTest.php
index 9009bbb..c40fbe8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/CascadingStylesheetsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/CascadingStylesheetsTest.php
@@ -43,27 +43,6 @@ function testDefault() {
   }
 
   /**
-   * Tests that stylesheets in module .info files are loaded.
-   */
-  function testModuleInfo() {
-    $this->drupalGet('');
-
-    // Verify common_test.css in a STYLE media="all" tag.
-    $elements = $this->xpath('//style[@media=:media and contains(text(), :filename)]', array(
-      ':media' => 'all',
-      ':filename' => 'tests/modules/common_test/common_test.css',
-    ));
-    $this->assertTrue(count($elements), "Stylesheet with media 'all' in module .info file found.");
-
-    // Verify common_test.print.css in a STYLE media="print" tag.
-    $elements = $this->xpath('//style[@media=:media and contains(text(), :filename)]', array(
-      ':media' => 'print',
-      ':filename' => 'tests/modules/common_test/common_test.print.css',
-    ));
-    $this->assertTrue(count($elements), "Stylesheet with media 'print' in module .info file found.");
-  }
-
-  /**
    * Tests adding a file stylesheet.
    */
   function testAddFile() {
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 617ae98..cac3274 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -2347,9 +2347,6 @@ function system_page_build(&$page) {
     $page['#attached']['css'][$path . '/system.admin.css'] = array('group' => CSS_SYSTEM);
   }
   $page['#attached']['css'][$path . '/system.theme.css'] = array('group' => CSS_SYSTEM, 'every_page' => TRUE);
-
-  // Add CSS/JS files from module .info files.
-  system_add_module_assets($page);
 }
 
 /**
@@ -2373,24 +2370,6 @@ function system_get_localized_date_format($languages) {
 }
 
 /**
- * Adds CSS and JavaScript files declared in module .info files.
- */
-function system_add_module_assets(&$page) {
-  foreach (system_get_module_info('stylesheets') as $module => $value) {
-    foreach ($value as $media => $stylesheets) {
-      foreach ($stylesheets as $stylesheet) {
-        $page['#attached']['css'][$stylesheet] = array('every_page' => TRUE, 'media' => $media);
-      }
-    }
-  }
-  foreach (system_get_module_info('scripts') as $module => $scripts) {
-    foreach ($scripts as $script) {
-      $page['#attached']['js'][$script] = array('every_page' => TRUE);
-    }
-  }
-}
-
-/**
  * Implements hook_custom_theme().
  */
 function system_custom_theme() {
diff --git a/core/modules/system/tests/modules/common_test/common_test.info b/core/modules/system/tests/modules/common_test/common_test.info
index 9e6d24f..7a128ab 100644
--- a/core/modules/system/tests/modules/common_test/common_test.info
+++ b/core/modules/system/tests/modules/common_test/common_test.info
@@ -3,6 +3,4 @@ description = "Support module for Common tests."
 package = Testing
 version = VERSION
 core = 8.x
-stylesheets[all][] = common_test.css
-stylesheets[print][] = common_test.print.css
 hidden = TRUE
diff --git a/core/modules/user/user.info b/core/modules/user/user.info
index 7e497e6..1d017da 100644
--- a/core/modules/user/user.info
+++ b/core/modules/user/user.info
@@ -5,4 +5,3 @@ version = VERSION
 core = 8.x
 required = TRUE
 configure = admin/config/people
-stylesheets[all][] = user.css
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index ac8f7e8..8a328d2 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -112,6 +112,14 @@ function user_theme() {
 }
 
 /**
+ * Implements hook_page_build().
+ */
+function user_page_build(&$page) {
+  $path = drupal_get_path('module', 'user');
+  $page['#attached']['css'][$path . '/user.css'] = array('every_page' => TRUE);
+}
+
+/**
  * Entity URI callback.
  */
 function user_uri($user) {
