diff --git a/eu_cookie_compliance.admin.inc b/eu_cookie_compliance.admin.inc
index 6689f71..073c43e 100755
--- a/eu_cookie_compliance.admin.inc
+++ b/eu_cookie_compliance.admin.inc
@@ -303,8 +303,13 @@ function eu_cookie_compliance_admin_form($form_state) {
  * Validates form for cookie control popup.
  */
 function eu_cookie_compliance_admin_form_validate($form, &$form_state) {
+  global $theme;
   global $language;
   $ln = $language->language;
+  global $_domain;
+  // Cache object is domain and language sensitive so need to get the current domain, if one exists.
+  $current_domain = isset($_domain['domain_id']) ? $_domain['domain_id'] . '_' : '';
+
   if (!preg_match('/^[1-9][0-9]{0,4}$/', $form_state['values']['eu_cookie_compliance_' . $ln]['popup_height']) && !empty($form_state['values']['eu_cookie_compliance_' . $ln]['popup_height'])) {
     form_set_error('eu_cookie_compliance_' . $ln . '][popup_height', t('Height must be an integer value .'));
   }
@@ -323,7 +328,8 @@ function eu_cookie_compliance_admin_form_validate($form, &$form_state) {
     form_set_error('eu_cookie_compliance_' . $ln . '][popup_link', t('Looks like your privacy policy link contains fragment #, you should make this an absolute url eg @link', array('@link' => $popup_link)));
   }
 
-  cache_clear_all('eu_cookie_compliance_client_settings_' . $language->language, 'cache');
+  // Cache object is theme, domain, and language sensitive.
+  cache_clear_all('eu_cookie_compliance_client_settings_' .  $theme . '_' . $current_domain . $language->language, 'cache');
 }
 
 /**
diff --git a/eu_cookie_compliance.module b/eu_cookie_compliance.module
index c6c93c4..c2803a4 100755
--- a/eu_cookie_compliance.module
+++ b/eu_cookie_compliance.module
@@ -91,9 +91,13 @@ function eu_cookie_compliance_page_build(&$page) {
 
   if (!empty($popup_settings['popup_enabled']) && user_access('display EU Cookie Compliance popup') && $geoip_match && $domain_allow && !$path_match && !$admin_page_match) {
     global $language;
+    global $_domain;
+    // Need to check if domain global variable exists and cache the settings per language AND domain.
+    $current_domain = isset($_domain['domain_id']) ? $_domain['domain_id'] . '_' : '';
+
     // Array storage for caching full client data.
     $data = array();
-    if($cache = cache_get('eu_cookie_compliance_client_settings_' . $theme . '_' . $language->language, 'cache')) {
+    if($cache = cache_get('eu_cookie_compliance_client_settings_' . $theme . '_' . $current_domain . $language->language, 'cache')) {
       $data = $cache->data;
     }
     else {
@@ -144,7 +148,8 @@ function eu_cookie_compliance_page_build(&$page) {
         'domain' => variable_get('eu_cookie_compliance_domain', ''),
         'cookie_lifetime' => variable_get('eu_cookie_compliance_cookie_lifetime', 100),
       );
-      cache_set('eu_cookie_compliance_client_settings_' . $theme . '_' . $language->language, $data, 'cache', CACHE_TEMPORARY);
+      // The cache object shoudl  should be
+      cache_set('eu_cookie_compliance_client_settings_' . $theme . '_' . $current_domain . $language->language, $data, 'cache', CACHE_TEMPORARY);
     }
     drupal_add_css($data['css'], array('type' => 'inline'));
     drupal_add_js(array('eu_cookie_compliance' => $data['variables']), array('type' => 'setting', 'scope' => 'footer'));
