diff --git a/engine/src/flutter/third_party/txt/src/txt/paragraph.cc b/engine/src/flutter/third_party/txt/src/txt/paragraph.cc index 3e15ecec0f8..94633bd230d 100644 --- a/engine/src/flutter/third_party/txt/src/txt/paragraph.cc +++ b/engine/src/flutter/third_party/txt/src/txt/paragraph.cc @@ -923,6 +923,11 @@ sk_sp Paragraph::GetDefaultSkiaTypeface(const TextStyle& style) { void Paragraph::Paint(SkCanvas* canvas, double x, double y) { SkPoint base_offset = SkPoint::Make(x, y); SkPaint paint; + // Paint the background first before painting any text to prevent + // potential overlap. + for (const PaintRecord& record : records_) { + PaintBackground(canvas, record, base_offset); + } for (const PaintRecord& record : records_) { if (record.style().has_foreground) { paint = record.style().foreground; @@ -931,7 +936,6 @@ void Paragraph::Paint(SkCanvas* canvas, double x, double y) { paint.setColor(record.style().color); } SkPoint offset = base_offset + record.offset(); - PaintBackground(canvas, record, base_offset); PaintShadow(canvas, record, offset); canvas->drawTextBlob(record.text(), offset.x(), offset.y(), paint); PaintDecorations(canvas, record, base_offset);