Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 21526)
+++ wp-includes/admin-bar.php	(working copy)
@@ -656,6 +656,17 @@
 	) );
 }
 
+function wp_admin_bar_screen_options( $wp_admin_bar ) {
+
+	$wp_admin_bar->add_menu( array(
+		'parent' => 'top-secondary',
+		'id'    => 'screen-options',
+		'title' => '(cog)',
+		'href'  => '',
+	) );
+
+	get_current_screen()->render_options( 'screen-options', $wp_admin_bar );
+}
 /**
  * Add secondary menus.
  *
Index: wp-includes/class-wp-admin-bar.php
===================================================================
--- wp-includes/class-wp-admin-bar.php	(revision 21526)
+++ wp-includes/class-wp-admin-bar.php	(working copy)
@@ -483,6 +483,9 @@
 		}
 		add_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 80 );
 
+		if ( is_admin() )
+			add_action( 'admin_bar_menu', 'wp_admin_bar_screen_options', 90 );
+
 		add_action( 'admin_bar_menu', 'wp_admin_bar_add_secondary_groups', 200 );
 
 		do_action( 'add_admin_bar_menus' );
Index: wp-admin/includes/screen.php
===================================================================
--- wp-admin/includes/screen.php	(revision 21526)
+++ wp-admin/includes/screen.php	(working copy)
@@ -49,31 +49,7 @@
  * @param string|WP_Screen $screen
  */
 function meta_box_prefs( $screen ) {
-	global $wp_meta_boxes;
-
-	if ( is_string( $screen ) )
-		$screen = convert_to_screen( $screen );
-
-	if ( empty($wp_meta_boxes[$screen->id]) )
-		return;
-
-	$hidden = get_hidden_meta_boxes($screen);
-
-	foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) {
-		foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) {
-			foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) {
-				if ( false == $box || ! $box['title'] )
-					continue;
-				// Submit box cannot be hidden
-				if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
-					continue;
-				$box_id = $box['id'];
-				echo '<label for="' . $box_id . '-hide">';
-				echo '<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />';
-				echo "{$box['title']}</label>\n";
-			}
-		}
-	}
+	return;
 }
 
 /**
@@ -870,79 +846,154 @@
 	 * @since 3.3.0
 	 */
 	public function render_screen_options() {
-		global $wp_meta_boxes, $wp_list_table;
+		// @todo new versions of these and then empty this function
+		$this->render_per_page_options();
+		echo $this->_screen_settings;
 
-		$columns = get_column_headers( $this );
-		$hidden  = get_hidden_columns( $this );
-
 		?>
-		<div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="<?php esc_attr_e('Screen Options Tab'); ?>">
-		<form id="adv-settings" action="" method="post">
-		<?php if ( isset( $wp_meta_boxes[ $this->id ] ) || $this->get_option( 'per_page' ) || ( $columns && empty( $columns['_title'] ) ) ) : ?>
-			<h5><?php _e( 'Show on screen' ); ?></h5>
+		<div><?php wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false ); ?></div>
+		</form>
+		</div>
 		<?php
-		endif;
+	}
 
-		if ( isset( $wp_meta_boxes[ $this->id ] ) ) : ?>
-			<div class="metabox-prefs">
-				<?php
-					meta_box_prefs( $this );
+	/*
+	 * Render screen options in the admin bar
+	 *
+	 */
+	function render_options( $parent, $wp_admin_bar ) {
+		$this->render_show_on_screen( $parent, $wp_admin_bar );
+		$this->render_layout( $parent, $wp_admin_bar );
+	}
 
-					if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
-						if ( isset( $_GET['welcome'] ) ) {
-							$welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
-							update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
-						} else {
-							$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
-							if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
-								$welcome_checked = false;
-						}
-						echo '<label for="wp_welcome_panel-hide">';
-						echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
-						echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
-					}
-				?>
-				<br class="clear" />
-			</div>
-			<?php endif;
-			if ( $columns ) :
-				if ( ! empty( $columns['_title'] ) ) : ?>
-			<h5><?php echo $columns['_title']; ?></h5>
-			<?php endif; ?>
-			<div class="metabox-prefs">
-				<?php
-				$special = array('_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname');
+	function render_show_on_screen( $parent, $wp_admin_bar ) {
+		global $wp_meta_boxes;
 
-				foreach ( $columns as $column => $title ) {
-					// Can't hide these for they are special
-					if ( in_array( $column, $special ) )
-						continue;
-					if ( empty( $title ) )
-						continue;
+		if ( ! $this->show_screen_options() )
+			return;
 
-					if ( 'comments' == $column )
-						$title = __( 'Comments' );
-					$id = "$column-hide";
-					echo '<label for="' . $id . '">';
-					echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( !in_array($column, $hidden), true, false ) . ' />';
-					echo "$title</label>\n";
+		$columns = get_column_headers( $this );
+
+		if ( ! isset( $wp_meta_boxes[ $this->id ] ) && ( ! $columns || isset( $columns['_title'] ) ) )
+			return;
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'show-on-screen',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array( 'html' =>  '<h5>' . __( 'Show on screen' ) . '</h5>' ),
+		) );
+
+		// Render meta box show/hide.
+		if ( isset( $wp_meta_boxes[ $this->id ] ) ) {
+			$hidden = get_hidden_meta_boxes($this);
+		
+			foreach ( array_keys($wp_meta_boxes[$this->id]) as $context ) {
+				foreach ( array_keys($wp_meta_boxes[$this->id][$context]) as $priority ) {
+					foreach ( $wp_meta_boxes[$this->id][$context][$priority] as $box ) {
+						if ( false == $box || ! $box['title'] )
+							continue;
+						// Submit box cannot be hidden
+						if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] )
+							continue;
+						$box_id = $box['id'];
+						$html = '<label for="' . $box_id . '-hide">' .
+							'<input class="hide-postbox-tog" name="' . $box_id . '-hide" type="checkbox" id="' . $box_id . '-hide" value="' . $box_id . '"' . (! in_array($box_id, $hidden) ? ' checked="checked"' : '') . ' />' .
+							"{$box['title']}</label>\n";
+						$wp_admin_bar->add_menu( array(
+							'id'    => 'show-on-screen-' . $box_id,
+							'parent' => $parent,
+							'href'  => '',
+							'meta'  => array( 'html' =>  $html ),
+						) );
+					}
 				}
-				?>
-				<br class="clear" />
-			</div>
-		<?php endif;
+			}
 
-		$this->render_screen_layout();
-		$this->render_per_page_options();
-		echo $this->_screen_settings;
+			if ( 'dashboard' === $this->id && current_user_can( 'edit_theme_options' ) ) {
+				if ( isset( $_GET['welcome'] ) ) {
+					$welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
+					update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
+				} else {
+					$welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+					if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
+						$welcome_checked = false;
+				}
+				$html = '<label for="wp_welcome_panel-hide">' .
+					'<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />' .
+					_x( 'Welcome', 'Welcome panel' ) . "</label>\n";
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'show-on-screen-' . $box_id,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array( 'html' =>  $html ),
+				) );
+			}
+		}
 
-		?>
-		<div><?php wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false ); ?></div>
-		</form>
-		</div>
-		<?php
+		// Render column show/hide.
+		if ( $columns ) {
+			$hidden  = get_hidden_columns( $this );
+
+			if ( ! empty( $columns['_title'] ) ) {
+				echo '<h5>' . $columns['_title'] . '</h5>';
+			}
+
+			$special = array( '_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname' );
+	
+			foreach ( $columns as $column => $title ) {
+				// Can't hide these for they are special
+				if ( in_array( $column, $special ) )
+					continue;
+				if ( empty( $title ) )
+					continue;
+	
+				if ( 'comments' == $column )
+					$title = __( 'Comments' );
+				$id = "$column-hide";
+				$html = '<label for="' . $id . '">' .
+					'<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( !in_array($column, $hidden), true, false ) . ' />' .
+					"$title</label>\n";
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'show-on-screen-' . $column,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array( 'html' =>  $html ),
+				) );
+			}
+		}
 	}
 
+	function render_layout( $parent, $wp_admin_bar ) {
+		if ( ! $this->get_option('layout_columns') )
+			return;
+
+		$screen_layout_columns = $this->get_columns();
+		$num = $this->get_option( 'layout_columns', 'max' );
+
+		$wp_admin_bar->add_menu( array(
+			'id'    => 'column-layout',
+			'parent' => $parent,
+			'href'  => '',
+			'meta'  => array( 'html' =>  '<h5>' . __( 'Column Layout' ) . '</h5>' ),
+		) );
+
+		for ( $i = 1; $i <= $num; ++$i ) {
+			$html = '<label class="columns-prefs-' . $i . '">' .
+				"<input type='radio' name='screen_columns' value='" . $i . "'" .
+				checked( $screen_layout_columns, $i, false ) . '/>' .
+				esc_html( $i ) .
+				'</label>';
+
+				$wp_admin_bar->add_menu( array(
+					'id'    => 'column-layout-' . $i,
+					'parent' => $parent,
+					'href'  => '',
+					'meta'  => array( 'html' =>  $html ),
+				) );
+		}
+	}
+
 	/**
 	 * Render the option for number of columns on the page
 	 *
Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 21526)
+++ wp-admin/admin-header.php	(working copy)
@@ -112,6 +112,7 @@
 <div id="wpcontent">
 
 <?php
+$current_screen->set_parentage( $parent_file );
 do_action('in_admin_header');
 ?>
 
@@ -119,15 +120,11 @@
 <?php
 unset($title_class, $blog_name, $total_update_count, $update_title);
 
-$current_screen->set_parentage( $parent_file );
-
 ?>
 
 <div id="wpbody-content" aria-label="<?php esc_attr_e('Main content'); ?>">
 <?php
 
-$current_screen->render_screen_meta();
-
 if ( is_network_admin() )
 	do_action('network_admin_notices');
 elseif ( is_user_admin() )
