diff --git a/src/phosh.c b/src/phosh.c
index c013f3a62342c23999695d695fd93eac023caa66..118a243c1385cf5ab948d9a61482fa3577e386d6 100644
--- a/src/phosh.c
+++ b/src/phosh.c
@@ -600,7 +600,8 @@ phosh_shell_get_monitor_manager (PhoshShell *self)
 void
 phosh_shell_get_usable_area (PhoshShell *self, gint *x, gint *y, gint *width, gint *height)
 {
-  PhoshMonitor *monitor = NULL;
+  PhoshMonitor *monitor;
+  PhoshMonitorMode *mode;
   PhoshShellPrivate *priv;
   gint w, h;
   gint scale;
@@ -610,14 +611,15 @@ phosh_shell_get_usable_area (PhoshShell *self, gint *x, gint *y, gint *width, gi
 
   monitor = phosh_shell_get_primary_monitor (self);
   g_return_if_fail(monitor);
+  mode = phosh_monitor_get_current_mode (monitor);
 
   scale = monitor->scale ? monitor->scale : 1;
   if (priv->rotation) {
-    w = monitor->height / scale;
-    h = monitor->width / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
+    w = mode->height / scale;
+    h = mode->width / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
   } else {
-    w = monitor->width / scale;
-    h = monitor->height / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
+    w = mode->width / scale;
+    h = mode->height / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
   }
 
   if (x)