Posting code on my blog, I realized that
<pre>\n\t\"</pre>
displays as
<pre>nt\"<pre>
(\n and \t are messed up, \" is not). This only occurs with the <pre> tag - <code> and <kbd> work just fine.
I tried to locate the source of the problem, and I tracked it down to wpautop (in functions-formatting.php), where in the end there is a line
$pee = preg_replace('!(<pre.*?>)(.*?)</pre>!ise', " stripslashes('$1') . stripslashes(clean_pre('$2')) . '</pre>' ", $pee);
The problem is obviously in stripslashes(clean_pre('$2')).
I did't get into the details, but I don't see why whould <pre> tags need to be cleaned at all: isn't everything between <pre> and </pre> supposed to remain untouched? - in my view, that's the whole point of <pre>!