diff --git a/src/quick3d/qdemoncamera.cpp b/src/quick3d/qdemoncamera.cpp
index e742b1546b69ae6ed1c8a5e8241462c0b3fa5c30..3167b23398f07b868a446409a034b4a707898f31 100644
--- a/src/quick3d/qdemoncamera.cpp
+++ b/src/quick3d/qdemoncamera.cpp
@@ -166,12 +166,12 @@ QVector2D QDemonCamera::worldToViewport(const QVector3D &worldPos) const
         return QVector2D(-1, -1);
 
     // Convert from left-handed to right-handed
-    QVector3D worldPosRightHand = worldPos * QVector3D(0, 0, -1);
+    QVector4D worldPosRightHand(worldPos.x(), worldPos.y(), -worldPos.z(), 1);
 
     // Transform position
     const QMatrix4x4 worldToCamera = m_cameraNode->globalTransform.inverted();
     QMatrix4x4 projectionViewMatrix = m_cameraNode->projection * worldToCamera;
-    QVector4D pos4d = mat44::transform(projectionViewMatrix, QVector4D(worldPosRightHand, 1));
+    QVector4D pos4d = mat44::transform(projectionViewMatrix, worldPosRightHand);
 
     // Check if the position is visible in the viewport
     if (pos4d.w() <= 0)