If the pagination or the amount of posts returning from the query is not correct, try adding 'post_status' => 'publish' to your query. It might be that WordPress messes up the count because it's also counting private or draft posts. Those are included in the count of the query but are not printed on the page.