 core/lib/Drupal/Core/Asset/CssOptimizer.php        |  5 ++++-
 .../Tests/Core/Asset/CssOptimizerUnitTest.php      | 26 ++++++++++++++++------
 .../css_input_with_import.css.optimized.css        |  2 +-
 .../css_input_with_import.css.optimized.css        |  2 +-
 4 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/core/lib/Drupal/Core/Asset/CssOptimizer.php b/core/lib/Drupal/Core/Asset/CssOptimizer.php
index dc34a23..b1317ba 100644
--- a/core/lib/Drupal/Core/Asset/CssOptimizer.php
+++ b/core/lib/Drupal/Core/Asset/CssOptimizer.php
@@ -61,13 +61,16 @@ public function clean($contents) {
    * Build aggregate CSS file.
    */
   protected function processFile($css_asset) {
+    global $base_path;
+
     $contents = $this->loadFile($css_asset['data'], TRUE);
 
     $contents = $this->clean($contents);
 
     // Get the parent directory of this file, relative to the Drupal root.
     $css_base_path = substr($css_asset['data'], 0, strrpos($css_asset['data'], '/'));
-    // Store base path.
+    // Store base path. Ensure it is a prefix that will result in root-relative
+    // file URLs.
     $this->rewriteFileURIBasePath = $css_base_path . '/';
 
     // Anchor all paths in the CSS with its base URL, ignoring external and absolute paths.
diff --git a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
index 03bb980..f9a9383 100644
--- a/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/CssOptimizerUnitTest.php
@@ -49,6 +49,11 @@ function file_uri_scheme($uri) {
 class CssOptimizerUnitTest extends UnitTestCase {
 
   /**
+   * {@inheritdoc}
+   */
+  protected $backupGlobals = FALSE;
+
+  /**
    * A CSS asset optimizer.
    *
    * @var \Drupal\Core\Asset\CssOptimizer object.
@@ -65,7 +70,8 @@ protected function setUp() {
    * Provides data for the CSS asset optimizing test.
    */
   function providerTestOptimize() {
-    $path = dirname(__FILE__)  . '/css_test_files/';
+    $path = 'core/tests/Drupal/Tests/Core/Asset/css_test_files/';
+    $absolute_path = dirname(__FILE__)  . '/css_test_files/';
     return array(
       // File. Tests:
       // - Stripped comments and white-space.
@@ -82,7 +88,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'css_input_without_import.css',
         ),
-        file_get_contents($path . 'css_input_without_import.css.optimized.css'),
+        file_get_contents($absolute_path . 'css_input_without_import.css.optimized.css'),
       ),
       // File. Tests:
       // - Proper URLs in imported files. (https://www.drupal.org/node/265719)
@@ -102,7 +108,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'css_input_with_import.css',
         ),
-        str_replace('url(images/icon.png)', 'url(' . file_create_url($path . 'images/icon.png') . ')', file_get_contents($path . 'css_input_with_import.css.optimized.css')),
+        str_replace('url(/core', 'url(file_create_url:/core', file_get_contents($absolute_path . 'css_input_with_import.css.optimized.css')),
       ),
       // File. Tests:
       // - Retain comment hacks.
@@ -117,7 +123,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'comment_hacks.css',
         ),
-        file_get_contents($path . 'comment_hacks.css.optimized.css'),
+        file_get_contents($absolute_path . 'comment_hacks.css.optimized.css'),
       ),
       // File in subfolder. Tests:
       // - CSS import path is properly interpreted.
@@ -134,7 +140,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'css_input_with_import.css',
         ),
-        str_replace('url(../images/icon.png)', 'url(' . file_create_url($path . 'images/icon.png') . ')', file_get_contents($path . 'css_subfolder/css_input_with_import.css.optimized.css')),
+        str_replace('url(/core', 'url(file_create_url:/core', file_get_contents($absolute_path . 'css_subfolder/css_input_with_import.css.optimized.css'))
       ),
       // File. Tests:
       // - Any @charaset declaration at the beginning of a file should be
@@ -150,7 +156,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'charset_sameline.css',
         ),
-        file_get_contents($path . 'charset.css.optimized.css'),
+        file_get_contents($absolute_path . 'charset.css.optimized.css'),
       ),
       array(
         array(
@@ -163,7 +169,7 @@ function providerTestOptimize() {
           'browsers' => array('IE' => TRUE, '!IE' => TRUE),
           'basename' => 'charset_newline.css',
         ),
-        file_get_contents($path . 'charset.css.optimized.css'),
+        file_get_contents($absolute_path . 'charset.css.optimized.css'),
       ),
       array(
         array(
@@ -226,7 +232,13 @@ function providerTestOptimize() {
    * @dataProvider providerTestOptimize
    */
   function testOptimize($css_asset, $expected) {
+    global $base_path;
+    $original_base_path = $base_path;
+    $base_path = '/';
+
     $this->assertEquals($expected, $this->optimizer->optimize($css_asset), 'Group of file CSS assets optimized correctly.');
+
+    $base_path = $original_base_path;
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_input_with_import.css.optimized.css b/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_input_with_import.css.optimized.css
index 16bd93b..f8af0c4 100644
--- a/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_input_with_import.css.optimized.css
+++ b/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_input_with_import.css.optimized.css
@@ -1,4 +1,4 @@
-ul,select{font:1em/160% Verdana,sans-serif;color:#494949;}.ui-icon{background-image:url(images/icon.png);}.data .double-quote{background-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");}.data .single-quote{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKAAH//Z');}.data .no-quote{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAEAQAAAAAo/mtHAAAAIElEQVQIHWMRnWHwcRNLN8NZ7QYWwT8PlBlYsgqVBRsAankIMw5MtnoAAAAASUVORK5CYII=);}
+ul,select{font:1em/160% Verdana,sans-serif;color:#494949;}.ui-icon{background-image:url(/core/tests/Drupal/Tests/Core/Asset/css_test_files/images/icon.png);}.data .double-quote{background-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");}.data .single-quote{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKAAH//Z');}.data .no-quote{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAEAQAAAAAo/mtHAAAAIElEQVQIHWMRnWHwcRNLN8NZ7QYWwT8PlBlYsgqVBRsAankIMw5MtnoAAAAASUVORK5CYII=);}
 p,select{font:1em/160% Verdana,sans-serif;color:#494949;}
 @import url("http://example.com/style.css");@import url("//example.com/style.css");body{margin:0;padding:0;background:#edf5fa;font:76%/170% Verdana,sans-serif;color:#494949;}.this .is .a .test{font:1em/100% Verdana,sans-serif;color:#494949;}.this
 .is
diff --git a/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_subfolder/css_input_with_import.css.optimized.css b/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_subfolder/css_input_with_import.css.optimized.css
index 816039d..e327d99 100644
--- a/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_subfolder/css_input_with_import.css.optimized.css
+++ b/core/tests/Drupal/Tests/Core/Asset/css_test_files/css_subfolder/css_input_with_import.css.optimized.css
@@ -1,4 +1,4 @@
-ul,select{font:1em/160% Verdana,sans-serif;color:#494949;}.ui-icon{background-image:url(../images/icon.png);}.data .double-quote{background-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");}.data .single-quote{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKAAH//Z');}.data .no-quote{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAEAQAAAAAo/mtHAAAAIElEQVQIHWMRnWHwcRNLN8NZ7QYWwT8PlBlYsgqVBRsAankIMw5MtnoAAAAASUVORK5CYII=);}
+ul,select{font:1em/160% Verdana,sans-serif;color:#494949;}.ui-icon{background-image:url(/core/tests/Drupal/Tests/Core/Asset/css_test_files/images/icon.png);}.data .double-quote{background-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");}.data .single-quote{background-image:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACAWGBwYFCAcGhwkIiAmMFA0MCwsMGJGSjpQdGZ6eHJmcG6AkLicgIiuim5woNqirr7EztDOfJri8uDI8LjKzsb/2wBDASIkJDAqMF40NF7GhHCExsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsb/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKAAH//Z');}.data .no-quote{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAEAQAAAAAo/mtHAAAAIElEQVQIHWMRnWHwcRNLN8NZ7QYWwT8PlBlYsgqVBRsAankIMw5MtnoAAAAASUVORK5CYII=);}
 p,select{font:1em/160% Verdana,sans-serif;color:#494949;}
 body{margin:0;padding:0;background:#edf5fa;font:76%/170% Verdana,sans-serif;color:#494949;}.this .is .a .test{font:1em/100% Verdana,sans-serif;color:#494949;}.this
 .is
