It turns out that !1656 (merged) broke crosshairs. This branch refactors the crosshair code to make them work again.