Index: trunk/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
===================================================================
--- trunk/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java	(revision 10862)
+++ trunk/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java	(revision 10863)
@@ -73,5 +73,5 @@
                         // for details see
                         // https://swinghelper.dev.java.net/issues/show_bug.cgi?id=1
-                        !st.getClassName().startsWith("javax.swing.SwingWorker")) {
+                         !st.getClassName().startsWith("javax.swing.SwingWorker")) {
                     fromSwing = true;
                 }
@@ -83,15 +83,22 @@
                     fromSwing = false;
                 }
+                if ("read".equals(st.getMethodName()) && "javax.swing.JEditorPane".equals(st.getClassName())) {
+                    // Swing reads html from a background thread
+                    return;
+                }
             }
-            if (imageUpdate)
+            if (imageUpdate) {
                 //assuming it is java.awt.image.ImageObserver.imageUpdate(...)
                 //image was asynchronously updated, that's ok
                 return;
-            if (repaint && !fromSwing)
+            }
+            if (repaint && !fromSwing) {
                 //no problems here, since repaint() is thread safe
                 return;
+            }
             //ignore the last processed component
-            if (lastComponent != null && c == lastComponent.get())
+            if (lastComponent != null && c == lastComponent.get()) {
                 return;
+            }
             lastComponent = new WeakReference<>(c);
             violationFound(c, stackTrace);
