admin uploads pre_get_posts not working as expected

Well first off get_current_screen only works in admin area but even in admin can cause problems on some page. Use the $pagenow global variable instead.

So now if you want to hide media not uploaded by a contributor this is how I would do it.

// Prevents user to see all uploads, only theirs
add_action('pre_get_posts','wpse_users_own_attachments');
function wpse_users_own_attachments( $wp_query_obj ) {

  global $current_user, $pagenow;

  if( !is_a( $current_user, 'WP_User') )
    return;

  if( !in_array( $pagenow, array( 'upload.php', 'admin-ajax.php' ) ) )
    return;

  if( current_user_can('contributor') )
    $wp_query_obj->set('author', $current_user->ID );

  return;
}