diff --git a/context_breakpoint.js b/context_breakpoint.js
index 5eb9d38b8aa4e8251cdcfe7c9c40a9a48cc7e171..9745bfdb1bf8415a124f144326b5bf11aeab30db 100644
--- a/context_breakpoint.js
+++ b/context_breakpoint.js
@@ -30,12 +30,24 @@
       var value = $window.width() + 'x' + $window.height()
         + '|' + screen.width + 'x' + screen.height;
 
+      // If the page is being loaded, we want to test the window size against
+      // the existing cookie (if the cookie is set). This ensures a necessary
+      // reload will happen if the user's window matches a different context
+      // than the cookie they have stored.
+      // If the page is being loaded and the cookie wasn't set, we'll force a
+      // reload in the checkForReload function when it gets called a few lines
+      // down.
+      if (!(this.width && this.height) && $.cookie('context_breakpoint')) {
+        var existing_cookie = $.cookie('context_breakpoint').split('x');
+        this.width = existing_cookie[0];
+        this.height = existing_cookie[1].split('|')[0];
+      }
+
       // Set cookie for screen resolution.
       document.cookie = 'context_breakpoint=' + value + '; expires=' + expires + '; path=/';
 
-      if (this.width && this.height) {
-        this.checkForReload($window.width(), $window.height());
-      }
+      this.checkForReload($window.width(), $window.height());
+
       this.width = $window.width();
       this.height = $window.height()
     },
@@ -53,7 +65,17 @@
           // If the result changes, the condition has changed, so we need
           // to reload.
           var now = this.checkCondition(cmd, $window.width(), $window.height(), value);
-          var before = this.checkCondition(cmd, this.width, this.height, value);
+
+          // this.width and this.height get set in onResize on page load if
+          // there was an existing cookie. If they aren't set at this point,
+          // that can only mean a cookie didn't exist, so we should reload the
+          // page to apply the context.
+          if (!(this.width && this.height)) {
+            var before = !now;
+          }
+          else {
+            var before = this.checkCondition(cmd, this.width, this.height, value);
+          }
 
           if (now !== before) {
             window.location.reload(true);
diff --git a/context_breakpoint.module b/context_breakpoint.module
index 8fce9936efbcb4bd35f12346b53910c03c8b9183..91e4764904f255b0b796033f832de9a1458990f7 100644
--- a/context_breakpoint.module
+++ b/context_breakpoint.module
@@ -8,6 +8,7 @@
  * Implements hook_init().
  */
 function context_breakpoint_init() {
+  drupal_add_library('system', 'jquery.cookie');
 }
 
 /**
