I had thought that the cursor may still have moved between the last mouseMoveEvent and the mouseReleaseEvent, but that turns out to be false making it completely unnecessary to call move functions in the release function.