diff --git a/src/phosh.c b/src/phosh.c
index b4cb85feea6af9b20958100a054df736527c86c7..c013f3a62342c23999695d695fd93eac023caa66 100644
--- a/src/phosh.c
+++ b/src/phosh.c
@@ -601,19 +601,29 @@ void
 phosh_shell_get_usable_area (PhoshShell *self, gint *x, gint *y, gint *width, gint *height)
 {
   PhoshMonitor *monitor = NULL;
-  gint panel_height = 0;
+  PhoshShellPrivate *priv;
   gint w, h;
+  gint scale;
+
+  g_return_if_fail (PHOSH_IS_SHELL (self));
+  priv = phosh_shell_get_instance_private (self);
 
   monitor = phosh_shell_get_primary_monitor (self);
   g_return_if_fail(monitor);
 
-  w = monitor->width;
-  h = monitor->height - panel_height;
+  scale = monitor->scale ? monitor->scale : 1;
+  if (priv->rotation) {
+    w = monitor->height / scale;
+    h = monitor->width / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
+  } else {
+    w = monitor->width / scale;
+    h = monitor->height / scale - PHOSH_PANEL_HEIGHT - PHOSH_HOME_HEIGHT;
+  }
 
   if (x)
     *x = 0;
   if (y)
-    *y = panel_height;
+    *y = PHOSH_PANEL_HEIGHT;
   if (width)
     *width = w;
   if (height)