diff --git a/lib/exe/css.php b/lib/exe/css.php
index 6c1d607514d3a2c0da391df74e7f704c710fdb93..902996062a94e4856f43b2011f564782eb4aba09 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -32,24 +32,25 @@ function css_out(){
     global $config_cascade;
     global $INPUT;
 
+    // decide from where to get the template
+    $tpl = trim(preg_replace('/[^\w-]+/','',$INPUT->str('t')));
+    if(!$tpl) $tpl = $conf['template'];
+
+    // load styl.ini
+    $styleini = css_styleini($tpl);
+    
+    // find mediatypes
     if ($INPUT->str('s') == 'feed') {
         $mediatypes = array('feed');
         $type = 'feed';
     } else {
-        $mediatypes = array('screen', 'all', 'print');
+        $mediatypes = array_unique(array_merge(array('screen', 'all', 'print'), array_keys($styleini['stylesheets'])));
         $type = '';
     }
 
-    // decide from where to get the template
-    $tpl = trim(preg_replace('/[^\w-]+/','',$INPUT->str('t')));
-    if(!$tpl) $tpl = $conf['template'];
-
     // The generated script depends on some dynamic options
     $cache = new cache('styles'.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].DOKU_BASE.$tpl.$type,'.css');
 
-    // load styl.ini
-    $styleini = css_styleini($tpl);
-
     // if old 'default' userstyle setting exists, make it 'screen' userstyle for backwards compatibility
     if (isset($config_cascade['userstyle']['default'])) {
         $config_cascade['userstyle']['screen'] = $config_cascade['userstyle']['default'];