diff --git a/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.cxx b/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.cxx
index 80dcf173e046dbf6aacbc2660cde0d1c52fa0cc7..240b7e49137341f6250c15ded2244cd527ed3e7c 100644
--- a/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.cxx
+++ b/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.cxx
@@ -252,6 +252,34 @@ int vtkGenericOpenGLRenderWindow::ReadPixels(
   return VTK_ERROR;
 }
 
+int vtkGenericOpenGLRenderWindow::SetPixelData(
+  int x1, int y1, int x2, int y2, unsigned char* data, int front, int right)
+{
+  if (this->ReadyForRendering)
+  {
+    this->MakeCurrent();
+    this->GetState()->ResetFramebufferBindings();
+    return this->Superclass::SetPixelData(x1, y1, x2, y2, data, front, right);
+  }
+
+  vtkWarningMacro("`SetPixelData` called before window is ready for rendering; ignoring.");
+  return VTK_ERROR;
+}
+
+int vtkGenericOpenGLRenderWindow::SetPixelData(
+  int x1, int y1, int x2, int y2, vtkUnsignedCharArray* data, int front, int right)
+{
+  if (this->ReadyForRendering)
+  {
+    this->MakeCurrent();
+    this->GetState()->ResetFramebufferBindings();
+    return this->Superclass::SetPixelData(x1, y1, x2, y2, data, front, right);
+  }
+
+  vtkWarningMacro("`SetPixelData` called before window is ready for rendering; ignoring.");
+  return VTK_ERROR;
+}
+
 int vtkGenericOpenGLRenderWindow::SetRGBACharPixelData(
   int x1, int y1, int x2, int y2, unsigned char* data, int front, int blend, int right)
 {
diff --git a/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.h b/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.h
index c51fa8a486f9d52d5dd211698a234664eeb267f4..2d60957ebc75e71fbdaa6fbed03db432858fb905 100644
--- a/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.h
+++ b/Rendering/OpenGL2/vtkGenericOpenGLRenderWindow.h
@@ -178,6 +178,10 @@ protected:
   int ReadPixels(
     const vtkRecti& rect, int front, int glFormat, int glType, void* data, int right) override;
 
+  int SetPixelData(
+    int x1, int y1, int x2, int y2, unsigned char* data, int front, int right) override;
+  int SetPixelData(
+    int x1, int y1, int x2, int y2, vtkUnsignedCharArray* data, int front, int right) override;
   int SetRGBACharPixelData(
     int x1, int y1, int x2, int y2, unsigned char* data, int front, int blend, int right) override;
   int SetRGBACharPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray* data, int front,