Custom navigation : show posts in sets of 4

I’m not sure if this is going to solve your whole issue, but you can add the paged parameter to your current custom query. I don’t know why you have set the offset parameter. If your offset is 0, omit it completely

Also, remember to reset your post data after your custom query. Try something like this as a start and then work from there

<?php 
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$loop = new WP_Query( array( 'post_type' => 'paintings', 'posts_per_page' => 4, 'paged' => $paged ) );
$count = $loop->post_count; 
$number = ceil($count / 4);

echo "<ul>";
while ( $loop->have_posts() ) : $loop->the_post(); 
    if ( has_post_thumbnail() ) { 
        echo "<li>" . the_post_thumbnail() . "</li>";
    } 
endwhile;
wp_reset_postdata(); 
echo "</ul>";
?>

This should, in theory, page your custom query with your main query