diff --git a/lib/filterlib.php b/lib/filterlib.php
index 3496f37..f95f5c0 100644
--- a/lib/filterlib.php
+++ b/lib/filterlib.php
@@ -214,11 +214,11 @@ class filter_manager {
      * @param object $context
      * @return object A string filter
      */
-    public function text_filtering_hash($context) {
+    public function text_filtering_hash($context, $text, $options) {
         $filters = $this->get_text_filters($context);
         $hashes = array();
         foreach ($filters as $filter) {
-            $hashes[] = $filter->hash();
+            $hashes[] = $filter->hash($text, $options);
         }
         return implode('-', $hashes);
     }
diff --git a/lib/weblib.php b/lib/weblib.php
index 4cb9ca4..d0fa567 100644
--- a/lib/weblib.php
+++ b/lib/weblib.php
@@ -1034,7 +1034,8 @@ function format_text($text, $format = FORMAT_MOODLE, $options = NULL, $courseid_
     }
 
     if (!empty($CFG->cachetext) and empty($options['nocache'])) {
-        $hashstr = $text.'-'.$filtermanager->text_filtering_hash($context).'-'.$context->id.'-'.current_language().'-'.
+        $hashstr = $text.'-'.$filtermanager->text_filtering_hash($context, $text, array('originalformat' => $format, 'noclean' => $options['noclean'])).
+                '-'.$context->id.'-'.current_language().'-'.
                 (int)$format.(int)$options['trusted'].(int)$options['noclean'].
                 (int)$options['para'].(int)$options['newlines'];
 
