Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.787
diff -u -p -r1.787 common.inc
--- includes/common.inc	17 Aug 2008 11:08:23 -0000	1.787
+++ includes/common.inc	21 Aug 2008 15:35:55 -0000
@@ -1716,7 +1716,7 @@ function drupal_get_css($css = NULL) {
 
   $preprocess_css = (variable_get('preprocess_css', FALSE) && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update'));
   $directory = file_directory_path();
-  $is_writable = is_dir($directory) && is_writable($directory) && (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PUBLIC);
+  $is_writable = is_dir($directory) && is_writable($directory);
 
   // A dummy query-string is added to filenames, to gain control over
   // browser-caching. The string changes on every update or full cache
@@ -1767,7 +1767,7 @@ function drupal_get_css($css = NULL) {
     if ($is_writable && $preprocess_css) {
       $filename = md5(serialize($types) . $query_string) . '.css';
       $preprocess_file = drupal_build_css_cache($types, $filename);
-      $output .= '<link type="text/css" rel="stylesheet" media="' . $media . '" href="' . base_path() . $preprocess_file . '" />' . "\n";
+      $output .= '<style type="text/css" media="'. $media .'">@import "'. file_create_url($preprocess_file) .'";</style>'. "\n";
     }
   }
 
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.84
diff -u -p -r1.84 system.admin.inc
--- modules/system/system.admin.inc	9 Aug 2008 12:41:23 -0000	1.84
+++ modules/system/system.admin.inc	21 Aug 2008 15:35:55 -0000
@@ -1392,7 +1392,7 @@ function system_performance_settings() {
   );
 
   $directory = file_directory_path();
-  $is_writable = is_dir($directory) && is_writable($directory) && (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PUBLIC);
+  $is_writable = is_dir($directory) && is_writable($directory);
   $form['bandwidth_optimizations']['preprocess_css'] = array(
     '#type' => 'radios',
     '#title' => t('Optimize CSS files'),
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.612
diff -u -p -r1.612 system.module
--- modules/system/system.module	2 Aug 2008 19:01:02 -0000	1.612
+++ modules/system/system.module	21 Aug 2008 15:35:56 -0000
@@ -2116,3 +2116,13 @@ function theme_meta_generator_header($ve
 function system_image_toolkits() {
   return array('gd');
 }
+
+/**
+ * Implementation of hook_file_download().
+ * Make sure css aggregation folder is always accessible when using private file downloads.
+ */
+function system_file_download($file) {  
+  if (strpos($file, 'css/') === 0) {
+    return array('Content-type: text/css');
+  }
+}
\ No newline at end of file
