diff --git a/demos/optical_bench/src/optix_pass.cpp b/demos/optical_bench/src/optix_pass.cpp
index 12cdf44858de3b01db72bd47a995038ada9dfc15..3beafb1dbfefd2ac06cf426a46428ff4a52e5686 100644
--- a/demos/optical_bench/src/optix_pass.cpp
+++ b/demos/optical_bench/src/optix_pass.cpp
@@ -195,7 +195,10 @@ void OptixPass::copyBuffersAndRenderInOpenGL(RenderTarget* render_target) {
   glEnable(GL_DEPTH_TEST);
   glDepthFunc(GL_LESS);
 
+  glDepthMask(GL_FALSE);
   glDrawArrays(GL_TRIANGLES, 0, 6);
+  glDepthMask(GL_TRUE);
+
   glBindVertexArray(0);
 
   shader_program_->unuse();
diff --git a/demos/optical_bench/src/ray_pass.cpp b/demos/optical_bench/src/ray_pass.cpp
index a4b65b99c1030faeefadbc71ba01f725a7649397..ff5f3ccb75431d93038124b5f1b547029d10c7c0 100644
--- a/demos/optical_bench/src/ray_pass.cpp
+++ b/demos/optical_bench/src/ray_pass.cpp
@@ -205,19 +205,18 @@ void RayPass::render(RenderTarget* render_target) {
 
   glBindVertexArray(vaoOpenGL);
 
+  glEnable(GL_BLEND);
   glEnable(GL_DEPTH_TEST);
-  glDepthFunc(GL_ALWAYS);
 
-  glEnable(GL_BLEND);
+  // Draw with additive blending and depth test, but now write
   glBlendFunc(GL_ONE, GL_ONE);
-
+  glDepthMask(GL_FALSE);
   glDrawArrays(GL_LINES, 0, 50 * 50 * laser_max_depth * 2);
+  glDepthMask(GL_TRUE);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
   glBindVertexArray(0);
 
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  glDepthFunc(GL_LESS);
-
   shader_program_->unuse();
   render_target->unbind();
 }
@@ -373,6 +372,7 @@ void RayPass::createTarget() {
     glm::mat4 trans =
         targetEntity->GetFirstComponent<phx::Transform>()->GetGlobalMatrix();
     targetTransform->setMatrix(true, &(trans[0][0]), &(inverse(trans)[0][0]));
+    optixContextManager_->getTopObject()->getAcceleration()->markDirty();
   });
   selector->SetRelease([this]() {
     if (getTargetBufferWrite()) clearTargetBuffers();