*Actually* better scroll calculation