diff --git a/src/aare/gui/widgets/camera_image.py b/src/aare/gui/widgets/camera_image.py index 27ee8a54..14b8a0dd 100644 --- a/src/aare/gui/widgets/camera_image.py +++ b/src/aare/gui/widgets/camera_image.py @@ -1354,7 +1354,13 @@ class SampleCameraImageLabel(QGraphicsView): def wheelEvent(self, event: QWheelEvent): if not self.wheel_event_timer.isActive(): - delta_y = event.angleDelta().y() + # Qt's xcb/windows platform plugins swap wheel axes while Alt is held, + # so a vertical scroll lands in angleDelta().x() and y() is 0. Without + # this fallback, copysign(_, 0) is always positive and Alt+wheel + # exposure can only ever increase. + delta_y = event.angleDelta().y() or event.angleDelta().x() + if delta_y == 0: + return match self._state: case SampleCameraImageState.BEAM_MARKING: if event.modifiers() & Qt.KeyboardModifier.AltModifier: