diff --git a/include/scigl_render/render/offscreen_render.hpp b/include/scigl_render/render/offscreen_render.hpp
index 20e773cea47b89adafa91b4a8a57670b67335326..ef6ceb4528a53a94ed543166cb40f12c7283c75f 100644
--- a/include/scigl_render/render/offscreen_render.hpp
+++ b/include/scigl_render/render/offscreen_render.hpp
@@ -48,13 +48,16 @@ public:
   another read is running on the backbuffer :)
   \retuns might return NULL otherwise the data
   */
-  void* do_read();
+  void *do_read();
 
   /*!
-  Unmaps the OpenGL memory and swaps front- & backbuffer.
+  Unmaps the OpenGL memory.
   */
   void end_read();
 
+  /*! Swap the front- and backbuffer */
+  void swap_buffers();
+
 private:
   int width;
   int height;
@@ -66,8 +69,5 @@ private:
   int backbuffer_index = 0;
   // transfer from pbo to CPU memory
   int frontbuffer_index = 1;
-
-  /*! Swap the front- and backbuffer */
-  void swap_buffers();
 };
 } // namespace scigl_render
diff --git a/src/example/example_render.cpp b/src/example/example_render.cpp
index fe380a8b2ebb30a9815a1d2b3bdef02876ecd874..4c354a4adc1311498f7c0e21b55fc03c7895c3b4 100644
--- a/src/example/example_render.cpp
+++ b/src/example/example_render.cpp
@@ -52,6 +52,7 @@ void ExampleRender::next_frame(const CvCamera &camera, const Model &model,
   check_gl_error("synchronous reading from pbo");
   display_data(data);
   offscreen_render.end_read();
+  offscreen_render.swap_buffers();
   check_gl_error("end synchronous reading");
 }
 
diff --git a/src/render/offscreen_render.cpp b/src/render/offscreen_render.cpp
index 508948bdc2b10aaed48aad7151cc7f79b14b0cc6..1bd28dd9a0cfb02d4e94676bb471ace269212192 100644
--- a/src/render/offscreen_render.cpp
+++ b/src/render/offscreen_render.cpp
@@ -56,7 +56,6 @@ void *OffscreenRender::do_read()
 void OffscreenRender::end_read()
 {
   glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
-  swap_buffers();
 }
 
 void OffscreenRender::swap_buffers()