--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -579,6 +579,8 @@
     m_geometry = QRect(xGeometry.topLeft(), xGeometry.size()/dpr);
     m_nativeGeometry = QRect(xGeometry.topLeft(), xGeometry.size());
     QRect xAvailableGeometry = xGeometry & m_virtualDesktop->workArea();
+    if (xAvailableGeometry.isEmpty())
+        xAvailableGeometry = xGeometry;
     m_availableGeometry = QRect(mapFromNative(xAvailableGeometry.topLeft()), xAvailableGeometry.size()/dpr);
     QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
 }
@@ -586,6 +588,8 @@
 void QXcbScreen::updateAvailableGeometry()
 {
     QRect availableGeometry = m_geometry & m_virtualDesktop->workArea();
+    if (availableGeometry.isEmpty())
+        availableGeometry = m_geometry;
     if (m_availableGeometry != availableGeometry) {
         m_availableGeometry = availableGeometry;
         QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
