diff --git a/src/headset/openxr_headset.cpp b/src/headset/openxr_headset.cpp
index 4d298260afaf710e5896d0bf3fa0d164ce1fa216..b79ebbb518af2736228092fff213217d028d9775 100644
--- a/src/headset/openxr_headset.cpp
+++ b/src/headset/openxr_headset.cpp
@@ -760,8 +760,7 @@ bool OpenXRHeadset::update_views()
         XrQuaternionf quaternion = view.pose.orientation;
         XrVector3f position = view.pose.position;
 
-        glm::mat4 pose_transform = (glm::mat4)glm::inverse(glm::quat(quaternion.w, quaternion.x, quaternion.y, quaternion.z));
-        pose_transform[3] = glm::vec4(-position.x, -position.y, -position.z, 1.0f);
+        glm::mat4 pose_transform = (glm::mat4) glm::inverse(glm::quat(quaternion.w, quaternion.x, quaternion.y, quaternion.z)) * glm::translate(glm::mat4(1.0f), glm::vec3(-position.x, -position.y, -position.z));
         
         this->head_to_eye_matrices[index] = glm::diagonal4x4(glm::vec4(1.0f, -1.0f, 1.0f, 1.0f)) * pose_transform;