diff --git a/plugins/platforms/drm/drm_backend.cpp b/plugins/platforms/drm/drm_backend.cpp --- a/plugins/platforms/drm/drm_backend.cpp +++ b/plugins/platforms/drm/drm_backend.cpp @@ -678,12 +678,11 @@ void DrmBackend::moveCursor() { - const QPoint p = Cursor::pos() - softwareCursorHotspot(); if (!m_cursorEnabled || isCursorHidden()) { return; } for (auto it = m_outputs.constBegin(); it != m_outputs.constEnd(); ++it) { - (*it)->moveCursor(p); + (*it)->moveCursor(Cursor::pos()); } } diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -104,7 +104,7 @@ void DrmOutput::moveCursor(const QPoint &globalPos) { - const QPoint p = (globalPos - m_globalPos) * m_scale; + const QPoint p = (globalPos * m_scale) - m_backend->softwareCursorHotspot(); drmModeMoveCursor(m_backend->fd(), m_crtc->id(), p.x(), p.y()); }