When DeviationRenderer builds the shape to draw and fill, it creates a GeneralPath with default initial capacity. When its drawing large datasets, Path2D.Float grows the internal array by 500 each time it needs more space. By changing the line:
GeneralPath area = new GeneralPath();
GeneralPath area = new GeneralPath(GeneralPath.WIND_NON_ZERO, drState.lowerCoordinates.size()
shaves off ~50% of the render time when dealing with datasets at 65k elements, and more as the size grows.