Loop for sticky posts

The issue is that you are using the function query_posts this only queries the default result on that page. It’s advised that you use wp_query instead, it just eliminates the margin for error or unexpected results.

You can create a new query like below, and specify explicitly how many posts to return:

<?php

$sticky = get_option( 'sticky_posts' );
rsort( $sticky );

$args = array(
    'post__in' => $sticky,
    'posts_per_page' => 10
    );

$sticky_query = new WP_Query( $args );

while ( $sticky_query->have_posts() ) : $sticky_query->the_post();
    // Do stuff with sticky posts
endwhile;

wp_reset_postdata();

This method also allows you to drop the array_slice process. So you can simply change posts_per_page to a number of your choice