diff --git a/demos/optical_bench/src/controller_overlay.cpp b/demos/optical_bench/src/controller_overlay.cpp
index f6bb6a7734478968563bacd87a0340ff72f7c2d3..3bea06ffbb2f9c9e002821dbb549b37e54c4dc0e 100644
--- a/demos/optical_bench/src/controller_overlay.cpp
+++ b/demos/optical_bench/src/controller_overlay.cpp
@@ -173,5 +173,6 @@ void phx::ControllerOverlay::setEntityImage(
     phx::Entity* e, phx::ResourcePointer<phx::Image> i) {
   e->GetFirstComponent<phx::MaterialHandle>()->GetMaterial()->SetAmbientImage(
       i);
+  e->GetFirstComponent<phx::MaterialHandle>()->GetMaterial()->UploadTextures();
 }
 }  // namespace phx
diff --git a/demos/optical_bench/src/ray_pass.cpp b/demos/optical_bench/src/ray_pass.cpp
index cc1e7a6fc68b3e3daa72be1496674205c9789669..4b62e04ad7ef7ceba632287ed835165527c2a7fb 100644
--- a/demos/optical_bench/src/ray_pass.cpp
+++ b/demos/optical_bench/src/ray_pass.cpp
@@ -279,6 +279,7 @@ void RayPass::createTarget() {
       target_screen_ = handle;
     }
   }
+  target_screen_->GetMaterial()->UploadTextures();
   target_texture = target_screen_->GetMaterial()->GetAmbientTexture();
 
   // used to expand the data in RAM and map back to GPU