diff --git a/libraries/gpu/src/gpu/Backend.cpp b/libraries/gpu/src/gpu/Backend.cpp
index ddda894306..2643014540 100644
--- a/libraries/gpu/src/gpu/Backend.cpp
+++ b/libraries/gpu/src/gpu/Backend.cpp
@@ -50,12 +50,19 @@ Backend::TransformCamera Backend::TransformCamera::getEyeCamera(int eye,
     TransformCamera result = *this;
     Transform eyeView = view;
     Transform eyePreviousView = previousView;
+    glm::vec3 eyePosition = extractTranslation(stereo._eyeViews[eye]);
+    glm::quat eyeOrientation = glmExtractRotation(stereo._eyeViews[eye]);
+    glm::vec3 eyePreviousPosition = extractTranslation(prevStereo._eyeViews[eye]);
+    glm::quat eyePreviousOrientation = glmExtractRotation(prevStereo._eyeViews[eye]);
     if (!stereo._skybox) {
-        eyeView.postTranslate(-Vec3(stereo._eyeViews[eye][3]));
-        eyePreviousView.postTranslate(-Vec3(prevStereo._eyeViews[eye][3]));
+        eyeView.postRotate(eyeOrientation).postTranslate(eyePosition);
+        eyePreviousView.postRotate(eyePreviousOrientation).postTranslate(eyePreviousPosition);
     } else {
         // FIXME: If "skybox" the ipd is set to 0 for now, let s try to propose a better solution for this in the future
-        eyePreviousView.setTranslation(vec3());
+        // XRTODO: maybe this is responsible for reprojection-like stutters?
+        //eyePreviousView.setTranslation(vec3());
+        eyeView.postRotate(eyeOrientation);
+        eyePreviousView.postRotate(eyePreviousOrientation);
     }
     result._projection = stereo._eyeProjections[eye];
     Mat4 previousProjection = prevStereo._eyeProjections[eye];