diff --git a/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx b/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx
index c1e744402d0abe0f9fff17cf957cd1c80ed2f44a..5385d22d6c1decd44b4f62ce6c1b7e966824d779 100644
--- a/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx
+++ b/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx
@@ -1287,8 +1287,13 @@ bool vtkXOpenGLRenderWindow::EnsureDisplay()
     this->DisplayId = XOpenDisplay(static_cast<char*>(nullptr));
     if (this->DisplayId == nullptr)
     {
-      vtkWarningMacro(<< "bad X server connection. DISPLAY="
-                      << vtksys::SystemTools::GetEnv("DISPLAY"));
+      // Only warn about DISPLAY if on-screen rendering is selected,
+      // this helps with automatic detection of best window backend.
+      if (this->ShowWindow)
+      {
+        vtkWarningMacro(<< "bad X server connection. DISPLAY="
+                        << vtksys::SystemTools::GetEnv("DISPLAY"));
+      }
     }
     else
     {