diff --git a/components/streams/src/renderers/openvr_render.cpp b/components/streams/src/renderers/openvr_render.cpp
index ef973ff089e7fbdb9890f50d982c8509f5889c3d..6346cf2448a6b52b8268fd25525f1e6022df5368 100644
--- a/components/streams/src/renderers/openvr_render.cpp
+++ b/components/streams/src/renderers/openvr_render.cpp
@@ -354,18 +354,22 @@ bool OpenVRRender::retrieve(ftl::data::Frame &frame_out) {
 			for (auto &s : sets) {
 				if (s->frameset() == my_id_) continue;  // Skip self
 
+				Eigen::Matrix4d pose;
+				pose.setIdentity();
+				if (s->hasChannel(Channel::Pose)) pose = s->cast<ftl::rgbd::Frame>().getPose();
+
 				// TODO: Check frame has required channels?
 
 				// FIXME: Don't use identity transform, get from Poser somehow.
 				renderer_->submit(
 					s.get(),
 					ftl::codecs::Channels<0>(ftl::codecs::Channel::Colour),
-					s->pose);
+					pose);
 
 				renderer2_->submit(
 					s.get(),
 					ftl::codecs::Channels<0>(ftl::codecs::Channel::Colour),
-					s->pose);
+					pose);
 			}
 
 			renderer_->render();