diff --git a/src/core/annotation.js b/src/core/annotation.js
index e59af8713..e6e01dc06 100644
--- a/src/core/annotation.js
+++ b/src/core/annotation.js
@@ -3724,6 +3724,8 @@ class FreeTextAnnotation extends MarkupAnnotation {
     // But if it has the noHTML flag, it means that we don't want to be able
     // to modify it so we can just draw it on the main canvas.
     this.data.hasOwnCanvas = !this.data.noHTML;
+    // We want to be able to add mouse listeners to the annotation.
+    this.data.noHTML = false;
 
     const { evaluatorOptions, xref } = params;
     this.data.annotationType = AnnotationType.FREETEXT;
diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js
index 32287337f..da2745da8 100644
--- a/src/display/annotation_layer.js
+++ b/src/display/annotation_layer.js
@@ -671,7 +671,14 @@ class AnnotationElement {
     }
   }
 
+  get _isEditable() {
+    return false;
+  }
+
   _editOnDoubleClick() {
+    if (!this._isEditable) {
+      return;
+    }
     const {
       annotationEditorType: mode,
       data: { id: editId },
@@ -2347,6 +2354,10 @@ class FreeTextAnnotationElement extends AnnotationElement {
 
     return this.container;
   }
+
+  get _isEditable() {
+    return this.data.hasOwnCanvas;
+  }
 }
 
 class LineAnnotationElement extends AnnotationElement {