Fix: prevent divide-by-zero in AxisItem