diff -r 7510dd1dbd0f web/org.openbravo.mobile.core/source/component/ob-commonbuttons.js
--- a/web/org.openbravo.mobile.core/source/component/ob-commonbuttons.js	Thu Jan 12 09:10:05 2017 +0100
+++ b/web/org.openbravo.mobile.core/source/component/ob-commonbuttons.js	Fri Jan 13 15:08:19 2017 +0100
@@ -264,6 +264,13 @@
     onkeydown: 'keydownHandler',
     onHideThisPopup: 'hideFromInside'
   },
+  render: function () {
+    this.inherited(arguments);
+    OB.MobileApp.view.renderedPopups = OB.MobileApp.view.renderedPopups || [];
+    if (_.indexOf(OB.MobileApp.view.renderedPopups, this.name) === -1) {
+      OB.MobileApp.view.renderedPopups.push(this.name);
+    }
+  },
   keydownHandler: function (inSender, inEvent) {
     var keyCode = inEvent.keyCode;
     if (keyCode === 27 && this.showing && this.autoDismiss && this.closeOnEscKey) { //Handle ESC key to hide the popup
diff -r 7510dd1dbd0f web/org.openbravo.mobile.core/source/component/ob-terminal-component.js
--- a/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js	Thu Jan 12 09:10:05 2017 +0100
+++ b/web/org.openbravo.mobile.core/source/component/ob-terminal-component.js	Fri Jan 13 15:08:19 2017 +0100
@@ -81,19 +81,24 @@
         }
       },
       showPopup: function (popupName, args) {
+        var popup = this.getPopup(popupName);
+        if (popup) {
+          popup.show(args);
+        }
+        return true;
+      },
+      getPopup: function (popupName) {
         var componentsArray, i;
         if (OB.MobileApp.view.$[popupName]) {
-          OB.MobileApp.view.$[popupName].show(args);
-          return true;
+          return OB.MobileApp.view.$[popupName];
         }
         componentsArray = this.getComponents();
         for (i = 0; i < componentsArray.length; i++) {
           if (componentsArray[i].$[popupName]) {
-            componentsArray[i].$[popupName].show(args);
-            break;
+            return componentsArray[i].$[popupName];
           }
         }
-        return true;
+        return false;
       },
       hidePopupHandler: function (inSender, inEvent) {
         if (inEvent.popup) {
@@ -289,7 +294,8 @@
   resizeWindow: function () {
     var winHeight = window.innerHeight,
         winWidth = window.innerWidth,
-        percentage, appHeight = 700;
+        percentage, appHeight = 700,
+        openedPopups, popupDomObj, popupEnyoObj, i;
 
     // resize in case of window rotation but not if virtual keyboard appears
     // hack: virtual keyboard is detected because only y is resized but not x
@@ -305,10 +311,25 @@
 
       percentage = window.innerHeight * 100 / appHeight;
       percentage = Math.floor(percentage) / 100;
+      openedPopups = OB.MobileApp.view.renderedPopups || [];
       document.body.style.zoom = percentage;
 
-      // after zooming, force render again
-      // if this is not done, iPad's Safari messes the layout when going from 1 to 2 columns
+      // In iPad's Safari after zooming, force render again.
+      // if this is not done, the browser messes the layout when going from 1 to 2 columns.
+      // Hide the openedPopups (if opened) and destroy the generated HTML DOM components.
+      for (i = 0; i < openedPopups.length; i++) {
+        popupEnyoObj = OB.MobileApp.view.$.containerWindow.getPopup(openedPopups[i]);
+        if (popupEnyoObj && popupEnyoObj.visibility && popupEnyoObj.hide) {
+          popupEnyoObj.hide({
+            ignoreOBEvents: true
+          });
+          popupDomObj = popupEnyoObj.hasNode();
+          if (popupDomObj && popupDomObj.parentNode && popupDomObj.parentNode.removeChild) {
+            popupDomObj.parentNode.removeChild(popupDomObj);
+          }
+        }
+      }
+      OB.MobileApp.view.renderedPopups = [];
       this.render();
     }
   },
