Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 8006)
+++ wp-includes/formatting.php	(working copy)
@@ -3,6 +3,7 @@
 function wptexturize($text) {
 	global $wp_cockneyreplace;
 	$next = true;
+	$has_pre_parent = false;
 	$output = '';
 	$curl = '';
 	$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
@@ -26,13 +27,17 @@
 	for ( $i = 0; $i < $stop; $i++ ) {
  		$curl = $textarr[$i];
 
-		if (isset($curl{0}) && '<' != $curl{0} && '[' != $curl{0} && $next) { // If it's not a tag
+		if (isset($curl{0}) && '<' != $curl{0} && '[' != $curl{0} && $next && !$has_pre_parent) { // If it's not a tag
 			// static strings
 			$curl = str_replace($static_characters, $static_replacements, $curl);
 			// regular expressions
 			$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
-		} elseif (strpos($curl, '<code') !== false || strpos($curl, '<pre') !== false || strpos($curl, '<kbd') !== false || strpos($curl, '<style') !== false || strpos($curl, '<script') !== false) {
+		} elseif (strpos($curl, '<code') !== false || strpos($curl, '<kbd') !== false || strpos($curl, '<style') !== false || strpos($curl, '<script') !== false) {
 			$next = false;
+		} elseif (strpos($curl, '<pre') !== false) {
+			$has_pre_parent = true;
+		} elseif (strpos($curl, '</pre>') !== false) {
+			$has_pre_parent = false;
 		} else {
 			$next = true;

