diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp
index 52bf09765ee7e0414db3dc930f08f9fc3af8a7de..edc50c554b6c73bd2f06914eba6dd7adf9e43483 100644
--- a/projects/voxelization/src/main.cpp
+++ b/projects/voxelization/src/main.cpp
@@ -27,6 +27,47 @@ int main(int argc, const char** argv) {
 		true
 	);
 
+	bool    isFullscreen            = false;
+	int     windowedWidthBackup     = windowWidth;
+	int     windowedHeightBackup    = windowHeight;
+	int     windowedPosXBackup;
+	int     windowedPosYBackup;
+    glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
+
+	window.e_key.add([&](int key, int scancode, int action, int mods) {
+		if (key == GLFW_KEY_F11 && action == GLFW_PRESS) {
+			if (isFullscreen) {
+				glfwSetWindowMonitor(
+					window.getWindow(),
+					nullptr,
+					windowedPosXBackup,
+					windowedPosYBackup,
+					windowedWidthBackup,
+					windowedHeightBackup,
+					GLFW_DONT_CARE);
+			}
+			else {
+				windowedWidthBackup     = windowWidth;
+				windowedHeightBackup    = windowHeight;
+
+				glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
+
+				GLFWmonitor*        monitor     = glfwGetPrimaryMonitor();
+				const GLFWvidmode*  videoMode   = glfwGetVideoMode(monitor);
+
+				glfwSetWindowMonitor(
+					window.getWindow(),
+					glfwGetPrimaryMonitor(),
+					0,
+					0,
+					videoMode->width,
+					videoMode->height,
+					videoMode->refreshRate);
+			}
+			isFullscreen = !isFullscreen;
+		}
+	});
+
 	vkcv::camera::CameraManager cameraManager(window);
 	uint32_t camIndex  = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
 	uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);