diff --git a/src/Main/FrameBufferX11.cpp b/src/Main/FrameBufferX11.cpp
index ca56b59..b3ae3b4 100644
--- a/src/Main/FrameBufferX11.cpp
+++ b/src/Main/FrameBufferX11.cpp
@@ -50,12 +50,11 @@
 			assert(x_display);
 		}
 
-		validateWindow();
-
 		int screen = DefaultScreen(x_display);
 		x_gc = libX11->XDefaultGC(x_display, screen);
 		int depth = libX11->XDefaultDepth(x_display, screen);
 
+		XVisualInfo x_visual;
 		Status status = libX11->XMatchVisualInfo(x_display, screen, 32, TrueColor, &x_visual);
 		bool match = (status != 0 && x_visual.blue_mask == 0xFF);   // Prefer X8R8G8B8
 		Visual *visual = match ? x_visual.visual : libX11->XDefaultVisual(x_display, screen);
@@ -118,9 +117,6 @@
 			shmctl(shminfo.shmid, IPC_RMID, 0);
 		}
 
-		// Last chance to check the window before we close the display.
-		validateWindow();
-
 		if(ownX11)
 		{
 			libX11->XCloseDisplay(x_display);
@@ -147,8 +143,6 @@
 	{
 		copy(source);
 
-		assert(validateWindow());
-
 		if(!mit_shm)
 		{
 			libX11->XPutImage(x_display, x_window, x_gc, x_image, 0, 0, 0, 0, width, height);
@@ -190,21 +184,6 @@
 			libX11->XDrawString(x_display, x_window, x_gc, 50, 50, string, strlen(string));
 		}
 	}
-
-	bool FrameBufferX11::validateWindow()
-	{
-		// Since we don't own the window, it is the external client code's responsibility
-		// to not destroy it until we're done with it. We help out by validating it.
-		XWindowAttributes windowAttributes;
-		Status status = libX11->XGetWindowAttributes(x_display, x_window, &windowAttributes);
-
-		if(status != True)
-		{
-			abort();   // Fail hard if we can't obtain the window's attributes.
-		}
-
-		return true;
-	}
 }
 
 NO_SANITIZE_FUNCTION sw::FrameBuffer *createFrameBuffer(void *display, Window window, int width, int height)
diff --git a/src/Main/FrameBufferX11.hpp b/src/Main/FrameBufferX11.hpp
index aa06276..dc96331 100644
--- a/src/Main/FrameBufferX11.hpp
+++ b/src/Main/FrameBufferX11.hpp
@@ -31,21 +31,18 @@
 
 		~FrameBufferX11() override;
 
-		void flip(sw::Surface *source) override {blit(source, nullptr, nullptr);};
+		void flip(sw::Surface *source) override { blit(source, nullptr, nullptr); }
 		void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override;
 
 		void *lock() override;
 		void unlock() override;
 
 	private:
-		bool validateWindow();
-
-		bool ownX11;
+		const bool ownX11;
 		Display *x_display;
-		Window x_window;
-		XImage *x_image;
+		const Window x_window;
+		XImage *x_image = nullptr;
 		GC x_gc;
-		XVisualInfo x_visual;
 
 		bool mit_shm;
 		XShmSegmentInfo shminfo;
