diff --git menu_icons.module menu_icons.module
index 0ff8ccf..f13d00b 100644
--- menu_icons.module
+++ menu_icons.module
@@ -154,7 +154,8 @@ function menu_icons_form_submit($form, &$form_state) {
  * Implementation of hook_init().
  */
 function menu_icons_init() {
-  drupal_add_css(menu_icons_directory_path() .'/menu_icons.css');
+  $css_file = menu_icons_get_css_path();
+  drupal_add_css($css_file);
 }
 
 /**
@@ -220,9 +221,11 @@ function menu_icons_admin_settings() {
 /**
  * Build CSS based on menu IDs
  *
+ * @param $theme
+ *   Machine name of the theme to generate the CSS file for.
  * @return A string with the CSS
  */
-function menu_icons_css_generate() {
+function menu_icons_css_generate($theme) {
   $result = db_query("SELECT mlid, options FROM {menu_links}");
   $pos = variable_get('menu_icons_position', 'left');
 
@@ -251,7 +254,11 @@ function menu_icons_css_generate() {
       $css .= theme('menu_icons_css_item', $item['mlid'], $image_url, $info['width'], $pos);
     }
   }
-  file_save_data($css, menu_icons_directory_path(FALSE) .'/menu_icons.css', FILE_EXISTS_REPLACE);
+  // Check CSS directory exists, and if not, create it.
+  $css_directory = menu_icons_directory_path(TRUE) .'/css';
+  file_check_directory($css_directory, FILE_CREATE_DIRECTORY);
+
+  file_save_data($css, menu_icons_directory_path(FALSE) .'/css/menu_icons.'. $theme .'.css', FILE_EXISTS_REPLACE);
 }
 
 /**
@@ -270,7 +277,7 @@ function menu_icons_theme() {
  * Implementation of hook_flush_caches().
  */
 function menu_icons_flush_caches() {
-  menu_icons_css_generate();
+  file_scan_directory(menu_icons_directory_path() . '/css', '.*', array('.', '..', 'CVS'), 'file_delete', TRUE);
 }
 
 /**
@@ -303,3 +310,18 @@ function menu_icons_imagecache_default_presets() {
   );
   return $presets;
 }
+
+/**
+ * Determines the CSS file name, and creates it if it doesn't exist.
+ */
+function menu_icons_get_css_path() {
+  init_theme();
+  global $theme_key;
+
+  $filename = 'menu_icons.'. $theme_key .'.css';
+  $path = menu_icons_directory_path() .'/css';
+  if (!file_exists($path .'/'. $filename)) {
+    menu_icons_css_generate($theme_key);
+  }
+  return $path .'/'. $filename;
+}
