Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 19536)
+++ wp-includes/default-filters.php	(working copy)
@@ -194,6 +194,7 @@
 add_filter( 'pings_open',               '_close_comments_for_old_post', 10, 2 );
 add_filter( 'editable_slug',            'urldecode'                           );
 add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object'        );
+add_filter( 'widget_text',        array( 'WP_Widget_Text', 'wpautop' ), 10, 2 ); // dependent on the widget setting
 add_filter( 'widget_text',              'shortcode_unautop'                   );
 add_filter( 'widget_text',              'do_shortcode'                        );
 
Index: wp-includes/default-widgets.php
===================================================================
--- wp-includes/default-widgets.php	(revision 19536)
+++ wp-includes/default-widgets.php	(working copy)
@@ -374,12 +374,12 @@
 	}
 
 	function widget( $args, $instance ) {
-		extract($args);
+		extract( $args );
 		$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
-		$text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
+		$text  = apply_filters( 'widget_text',  empty( $instance['text'] )  ? '' : $instance['text'],  $instance, $this->id_base );
 		echo $before_widget;
-		if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
-			<div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
+		if ( ! empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
+			<div class="textwidget"><?php echo $text; ?></div>
 		<?php
 		echo $after_widget;
 	}
@@ -408,6 +408,12 @@
 		<p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
 <?php
 	}
+
+	static function wpautop( $text, $instance ) {
+		if ( ! empty( $instance['filter'] ) )
+			$text = wpautop( $text );
+		return $text;
+	}
 }
 
 /**
