diff --git a/src/framework/WindowManager.cpp b/src/framework/WindowManager.cpp
index 5b5a243a329f612546fa4bf71f69477554d287ce..0a7bfbd968319807995a03403be135e161efa632 100644
--- a/src/framework/WindowManager.cpp
+++ b/src/framework/WindowManager.cpp
@@ -81,7 +81,7 @@ bool WindowManager::initialize(const int width, const int height, const int fram
 	// set common video flags
 	m_VideoModeFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE;
 	// enable HDPI (retina) support
-	// m_VideoModeFlags |= SDL_WINDOW_ALLOW_HIGHDPI;
+	m_VideoModeFlags |= SDL_WINDOW_ALLOW_HIGHDPI;
 
 	// check fullscreen video mode
 	m_FullscreenModeAvailable = true;
@@ -279,9 +279,21 @@ void WindowManager::eventLoop()
 										AbstractGraphicsEngine::MouseButtonRight);
 			}
 		}
+		else if (event.window.event == SDL_WINDOWEVENT_EXPOSED) {
+			// adjust to current canvas size
+			SDL_GL_GetDrawableSize(m_Window, &m_CurrentWidth, &m_CurrentHeight);
+
+			// notify our observers (currently exactly one, hence front())
+			// (windoze needs to be reinitialized instead of just resized, oh well)
+			/// \todo Can we determine the host OS? On X11 a resize() is sufficient!
+			eventObservers.front()->initialize(m_CurrentWidth, m_CurrentHeight, 0, true);
+		}
 		else if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
-			m_CurrentWidth = m_WindowedWidth = event.window.data1;
-			m_CurrentHeight = m_WindowedHeight = event.window.data2;
+			m_WindowedWidth = event.window.data1;
+			m_WindowedHeight = event.window.data2;
+
+			// adjust to current canvas size
+			SDL_GL_GetDrawableSize(m_Window, &m_CurrentWidth, &m_CurrentHeight);
 
 			// notify our observers (currently exactly one, hence front())
 			// (windoze needs to be reinitialized instead of just resized, oh well)