Index: code/freespace2/freespace.cpp
===================================================================
--- code/freespace2/freespace.cpp	(revision 9384)
+++ code/freespace2/freespace.cpp	(working copy)
@@ -3670,7 +3670,15 @@
 	if(draw_viewer_last && Viewer_obj)
 	{
 		gr_post_process_save_zbuffer();
+		vec3d Viewer_pos_save = Viewer_obj->pos;
+		vec3d cockpit_eye_pos;
+		matrix dummy;
+		Viewer_obj->pos = vmd_zero_vector;
+		ship_get_eye(&cockpit_eye_pos, &dummy, Viewer_obj);
+		vm_vec_scale(&cockpit_eye_pos, -1.0f);
+		Viewer_obj->pos = cockpit_eye_pos;
 		ship_render(Viewer_obj);
+		Viewer_obj->pos = Viewer_pos_save;
 	}
 
 
Index: code/ship/ship.cpp
===================================================================
--- code/ship/ship.cpp	(revision 9384)
+++ code/ship/ship.cpp	(working copy)
@@ -5745,8 +5745,8 @@
 	bool is_first_stage_arrival = false;
 	bool show_thrusters = (shipp->flags2 & SF2_NO_THRUSTERS) == 0;
 	dock_function_info dfi;
+	uint render_flags = MR_NORMAL;
 
-
 #if 0
 	// show target when attacking big ship
 	vec3d temp, target;
@@ -5810,7 +5810,9 @@
 			gr_end_proj_matrix();
 
 			gr_set_proj_matrix(Proj_fov, gr_screen.clip_aspect, 0.05f, Max_draw_distance);
-			gr_set_view_matrix(&Eye_position, &Eye_matrix);
+			gr_set_view_matrix(&vmd_zero_vector, &Eye_matrix);
+			render_flags |= MR_LOCK_DETAIL;
+			model_set_detail_level(0);
 		}
 	}
 
@@ -5848,7 +5850,7 @@
 
 		ship_model_start(obj);
 
-		uint render_flags = MR_NORMAL;
+		
 	#ifndef NDEBUG
 		if(Show_paths || Show_fpaths){
 			render_flags |= MR_BAY_PATHS;
