Work in progress #576: Heavily optimize 2D viewer memory usage by using numpy