diff --git a/resources/static/dialog/controllers/actions.js b/resources/static/dialog/controllers/actions.js
index 80435e5220f6bafe3e5856ef3aeb358bc715a098..3a95c89155d98f12c71b9f8eb11231f0a1f82bfe 100644
--- a/resources/static/dialog/controllers/actions.js
+++ b/resources/static/dialog/controllers/actions.js
@@ -28,7 +28,6 @@ BrowserID.Modules.Actions = (function() {
     }
 
     mediator.publish("service", { name: name });
-    bid.resize();
 
     return module;
   }
diff --git a/resources/static/shared/error-display.js b/resources/static/shared/error-display.js
index c607eac8f9c37b1a0ecaf07af2b7e50a47699338..7777364d2242006aca12f7c98c08d099466c586e 100644
--- a/resources/static/shared/error-display.js
+++ b/resources/static/shared/error-display.js
@@ -14,7 +14,12 @@ BrowserID.ErrorDisplay = (function() {
     /**
      * XXX What a big steaming pile, use CSS animations for this!
      */
-    $("#moreInfo").slideDown();
+    $("#moreInfo").slideDown(function() {
+      // The expanded info may be partially obscured on mobile devices in
+      // landscape mode.  Force the screen size hacks to account for the new
+      // expanded size.
+      dom.fireEvent(window, "resize");
+    });
     $("#openMoreInfo").css({visibility: "hidden"});
   }
 
diff --git a/resources/static/shared/screens.js b/resources/static/shared/screens.js
index 0ce5cd13392214a46ad7c22c839945c284b854cd..e45daaea63ce87b41b4759c3497852602b78fbe3 100644
--- a/resources/static/shared/screens.js
+++ b/resources/static/shared/screens.js
@@ -15,11 +15,13 @@ BrowserID.Screens = (function() {
       show: function(template, vars) {
         renderer.render(target + " .contents", template, vars);
         dom.addClass(BODY, className);
+        dom.fireEvent(window, "resize");
         this.visible = true;
       },
 
       hide: function() {
         dom.removeClass(BODY, className);
+        dom.fireEvent(window, "resize");
         this.visible = false;
       }
     }