diff --git a/js/ui/windowPreview.js b/js/ui/windowPreview.js
index 23a353ef5..f6d1490a3 100644
--- a/js/ui/windowPreview.js
+++ b/js/ui/windowPreview.js
@@ -231,8 +231,22 @@ var WindowPreview = GObject.registerClass({
 
         this._stackAbove = null;
 
+        this._cachedBoundingBox = {
+            x: this._windowContainer.layout_manager.bounding_box.x1,
+            y: this._windowContainer.layout_manager.bounding_box.y1,
+            width: this._windowContainer.layout_manager.bounding_box.get_width(),
+            height: this._windowContainer.layout_manager.bounding_box.get_height(),
+        };
+
         this._windowContainer.layout_manager.connect(
             'notify::bounding-box', layout => {
+                this._cachedBoundingBox = {
+                    x: layout.bounding_box.x1,
+                    y: layout.bounding_box.y1,
+                    width: layout.bounding_box.get_width(),
+                    height: layout.bounding_box.get_height(),
+                };
+
                 // A bounding box of 0x0 means all windows were removed
                 if (layout.bounding_box.get_area() > 0)
                     this.emit('size-changed');
@@ -561,23 +575,14 @@ var WindowPreview = GObject.registerClass({
     }
 
     get boundingBox() {
-        const box = this._windowContainer.layout_manager.bounding_box;
-
-        return {
-            x: box.x1,
-            y: box.y1,
-            width: box.get_width(),
-            height: box.get_height(),
-        };
+        return { ...this._cachedBoundingBox };
     }
 
     get windowCenter() {
-        const box = this._windowContainer.layout_manager.bounding_box;
-
-        return new Graphene.Point({
-            x: box.get_x() + box.get_width() / 2,
-            y: box.get_y() + box.get_height() / 2,
-        });
+        return {
+            x: this._cachedBoundingBox.x + this._cachedBoundingBox.width / 2,
+            y: this._cachedBoundingBox.y + this._cachedBoundingBox.height / 2,
+        };
     }
 
     // eslint-disable-next-line camelcase