I came up with this... does what I need and I have no visual artifacts anymore. Still, I'm not happy for having to override a private method in order for this to work... :-/ Overridden existing method in my Morph subclass: privateFullMoveBy: delta super privateFullMoveBy: delta. (self wantsToConstrainDragging & self isBeingDragged) ifTrue: [ self adjustPositionWhileDragging ] New methods in my Morph subclass: isBeingDragged ^ self owner isHandMorph wantsToConstrainDragging ^ true adjustPositionWhileDragging self position: (self constrainedDragPositionFrom: (self topLeft)) constrainedDragPositionFrom: aNonConstrainedPosition "Adjust the position to be constrained however you want. In this case horizontally at y=450" ^ (aNonConstrainedPosition x) @ 450. You would need to override only "wantsToConstrainDragging" and "constrainedDragPositionFor:". Any critique to the code and/or naming welcome! :-) Cheers, Sebastian