Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 19594)
+++ wp-includes/admin-bar.php	(working copy)
@@ -473,22 +473,29 @@
  */
 function wp_admin_bar_new_content_menu( $wp_admin_bar ) {
 	$actions = array();
+	$position = array();
 
 	$cpts = (array) get_post_types( array( 'show_in_admin_bar' => true ), 'objects' );
 
 	if ( isset( $cpts['post'] ) && current_user_can( $cpts['post']->cap->edit_posts ) ) {
 		$actions[ 'post-new.php' ] = array( $cpts['post']->labels->name_admin_bar, 'new-post' );
+		$position[] = 5;
 		unset( $cpts['post'] );
 	}
 
-	if ( current_user_can( 'upload_files' ) )
+	if ( current_user_can( 'upload_files' ) ) {
 		$actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
+		$position[] = 10;
+	}
 
-	if ( current_user_can( 'manage_links' ) )
+	if ( current_user_can( 'manage_links' ) ) {
 		$actions[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' );
+		$position[] = 15;
+	}
 
 	if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->edit_posts ) ) {
 		$actions[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' );
+		$position[] = 20;
 		unset( $cpts['page'] );
 	}
 
@@ -499,8 +506,12 @@
 
 		$key = 'post-new.php?post_type=' . $cpt->name;
 		$actions[ $key ] = array( $cpt->labels->name_admin_bar, 'new-' . $cpt->name );
+		$position[] = ( $cpt->menu_position ? $cpt->menu_position + 1 : max( $position ) + 1 );
 	}
 
+	// Menu position order
+	array_multisort( $position, $actions );
+
 	if ( current_user_can( 'create_users' ) || current_user_can( 'promote_users' ) )
 		$actions[ 'user-new.php' ] = array( _x( 'User', 'add new from admin bar' ), 'new-user' );
 
