FontMetrics const & fm = theFontMetrics(font);
int const size = int(0.75 * fm.maxAscent());
int const y = yo_ - size;
- int x = is_rtl ? nestMargin() + changebarMargin() : width_ - size;
-
- if (width_ - int(row_.width()) <= size)
- x += (size - width_ + row_.width() + 1) * (is_rtl ? -1 : 1);
+ int const max_row_width = width_ - size - Inset::TEXT_TO_INSET_OFFSET;
+ int x = is_rtl ? nestMargin() + changebarMargin()
+ : max_row_width - text_metrics_.rightMargin(pm_);
+
+ // If needed, move the box a bit to avoid overlapping with text.
+ int const rem = max_row_width - row_.width();
+ if (rem <= 0)
+ x += is_rtl ? rem : - rem;
if (endlabel == END_LABEL_BOX)
pi_.pain.rectangle(x, y, size, size, Color_eolmarker);