Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 11262)
+++ wp-includes/default-filters.php	(working copy)
@@ -74,6 +74,12 @@
 	add_filter( $filter, 'balanceTags', 50);
 }
 
+// Places to filter out newlines from html tags
+$filters = array('content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content', 'pre_term_description', 'pre_user_description', 'pre_link_description');
+foreach ( $filters as $filter ) {
+	add_filter( $filter, 'funky_html_fix', 1);
+}
+
 // Format strings for display.
 $filters = array('comment_author', 'term_name', 'link_name', 'link_description',
 	'link_notes', 'bloginfo', 'wp_title', 'widget_title');
Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 11262)
+++ wp-includes/formatting.php	(working copy)
@@ -806,6 +806,21 @@
 }
 
 /**
+ * strip newline characters in html tags to prevent wpautop bugs
+ *
+ * @return void
+ **/
+
+function funky_html_fix($text) {
+	$text = str_replace(array("\r\n", "\r"), "\n", $text);
+
+	while ( preg_match("/<[^<>]*\n/", $text) )
+		$text = preg_replace("/(<[^<>]*)\n+/", "$1", $text);
+
+	return $text;
+} # funky_html_fix()
+
+/**
  * Will only balance the tags if forced to and the option is set to balance tags.
  *
  * The option 'use_balanceTags' is used for whether the tags will be balanced.
