diff --git a/components/renderers/cpp/src/splat_render.cpp b/components/renderers/cpp/src/splat_render.cpp
index 49369dcdf4e5f28eaab25f686889d8f32500ef42..5829ff0557001c185d7d61f94ce0dc1442a805c4 100644
--- a/components/renderers/cpp/src/splat_render.cpp
+++ b/components/renderers/cpp/src/splat_render.cpp
@@ -315,14 +315,6 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out) {
 
 
 	if (scene_->frames.size() == 0) return false;
-
-	int aligned_source = value("aligned_source",-1);
-	if (aligned_source >= 0 && aligned_source < scene_->frames.size()) {
-		// FIXME: Output may not be same resolution as source!
-		scene_->frames[aligned_source].swapTo(Channel::Depth + Channel::Colour, out);
-		return true;
-	}
-
 	auto &g = scene_->frames[0].get<GpuMat>(Channel::Colour);
 
 	temp_.create<GpuMat>(Channel::Colour, Format<float4>(camera.width, camera.height));
@@ -403,6 +395,14 @@ bool Splatter::render(ftl::rgbd::VirtualSource *src, ftl::rgbd::Frame &out) {
 		}
 	}
 
+	int aligned_source = value("aligned_source",-1);
+	if (aligned_source >= 0 && aligned_source < scene_->frames.size()) {
+		// FIXME: Output may not be same resolution as source!
+		cudaSafeCall(cudaStreamSynchronize(stream_));
+		scene_->frames[aligned_source].swapTo(Channel::Depth + Channel::Colour, out);
+		return true;
+	}
+
 	_dibr(stream_);
 	_renderChannel(out, Channel::Colour, Channel::Colour, stream_);