diff --git a/modules/filter/filter.module b/modules/filter/filter.module
index 66fadcb..514ba60 100644
--- a/modules/filter/filter.module
+++ b/modules/filter/filter.module
@@ -1587,14 +1587,14 @@ function _filter_htmlcorrector($text) {
  */
 function _filter_autop($text) {
   // All block level tags
-  $block = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|p|h[1-6]|hr)';
-
-  // Split at opening and closing PRE, SCRIPT, STYLE, OBJECT, IFRAME tags
-  // and comments. We don't apply any processing to the contents of these tags
-  // to avoid messing up code. We look for matched pairs and allow basic
-  // nesting. For example:
-  // "processed <pre> ignored <script> ignored </script> ignored </pre> processed"
-  $chunks = preg_split('@(<!--.*?-->|</?(?:pre|script|style|object|iframe|!--)[^>]*>)@i', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
+  $block = '(?:table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|p|h[1-6]|hr|article|aside|figcaption|figure|footer|header|hgroup|output|section)';
+
+  // Split at opening and closing PRE, SCRIPT, STYLE, OBJECT, IFRAME, CANVAS, PROGRESS,
+  // AUDIO, VIDEO tags, and comments. We don't apply any processing to the
+  // contents of these tags to avoid messing up code. We look for matched pairs
+  // and allow basic nesting. For example: "processed <pre> ignored <script>
+  // ignored </script> ignored </pre> processed"
+  $chunks = preg_split('@(<!--.*?-->|</?(?:pre|script|style|object|iframe|canvas|progress|audio|video|!--)[^>]*>)@i', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
   // Note: PHP ensures the array consists of alternating delimiters and literals
   // and begins and ends with a literal (inserting NULL as required).
   $ignore = FALSE;
