pre_get_posts returning unformatted page

The pre_get_posts action hook only allows you to modify the $query object .

Any formatting or output of data is done in the template file within the loop. When you are in the loop you have access to various template tags that output the post data formatted (filters applied).

if ( have_posts() ) : while ( have_posts() ) : the_post();

    the_content(); //Same as echo apply_filters( 'the_content', $post->post_content );