diff --git a/modules/cart/commerce_cart.js b/modules/cart/commerce_cart.js
new file mode 100644
index 0000000..a86c6c8
--- /dev/null
+++ b/modules/cart/commerce_cart.js
@@ -0,0 +1,17 @@
+
+(function($) {
+
+  /**
+   * Make sure that attributes get reset to default on page load to avoid
+   * attribute-pricing inconsistency bug caused by browser caching.
+   */
+  Drupal.behaviors.commerceCartForm = {
+    attach: function (context, settings) {
+      var field;
+      for (field in Drupal.settings.commerceCartForm.defaults){
+        $('.attribute-widgets [name*="' + field + '"]').val(Drupal.settings.commerceCartForm.defaults[field]);
+      }
+    }
+  }
+
+})(jQuery);
diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index a2b3422..9b4e905 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -1765,6 +1765,19 @@ function commerce_cart_add_to_cart_form($form, &$form_state, $line_item, $show_q
       }
     }
 
+    // Inform the browser to force back to default state on page load, to avoid
+    // price-attribute inconsistencies.
+    if (!($form_state['submitted']) && !empty($form['attributes'])){
+      foreach (element_children($form['attributes']) as $attribute){
+        $default_attr_js[$attribute] = $form['attributes'][$attribute]['#default_value'];
+      }
+
+      if (!empty($default_attr_js)){
+        drupal_add_js(array('commerceCartForm' => array('defaults' => $default_attr_js)), 'setting');
+        $form['#attached']['js'][] = drupal_get_path('module', 'commerce_cart') . '/commerce_cart.js';
+      }
+    }
+
     // Render the quantity field as either a textfield if shown or a hidden
     // field if not.
     if ($show_quantity) {
