Index: filter.module
===================================================================
--- filter.module	(revision 345)
+++ filter.module	(working copy)
@@ -922,6 +922,8 @@
       $chunk = preg_replace('!(</?'. $block .'[^>]*>)\s*<br />!', "$1", $chunk);
       $chunk = preg_replace('!<br />(\s*</?(?:p|li|div|th|pre|td|ul|ol)>)!', '$1', $chunk);
       $chunk = preg_replace('/&([^#])(?![A-Za-z0-9]{1,8};)/', '&amp;$1', $chunk);
+      $chunk = preg_replace("|<p>(\[.+?\])</p>|", "$1", $chunk); // remove <p> around tokens, allows for W3 Compliant tokens
+      $chunk = preg_replace("|(\[.+?\])</p>|", "</p>$1", $chunk); // if content+token wrapped in <p> too, put </p> before token
     }
     $output .= $chunk;
   }
