I think this is definitely a bug, but I think the problem spot is actually where it’s passing the maxResults parameter when applying the filter:
$wpQueryResults = apply_filters( 'dwls_alter_results', $wpQueryResults, -1, $this );
There’s a hardcoded -1 being sent to as the max results for the filter but I think this should really be the max results option, which is modified before being applied as the post_per_page in the pre_get_posts action. Anyway, I think that line should be something like:
$maxResults = $wp_query->get( 'posts_per_page' );
$wpQueryResults = apply_filters( 'dwls_alter_results', $wpQueryResults, $maxResults, $this );