I found the problem in <code>Text::shape()</code>.
<pre>
QRectF r(l.naturalTextRect().translated(tl->position()));
</pre>
should take into account the movement of the bbox like this:
<pre>
QRectF r(l.naturalTextRect().translated(tl->position()+bbox().topLeft()));
</pre>
This appears to fix both the red box position and the click detection in all the cases I have tried. I'll update the branch with a new commit.