···426426 if (y as usize) < self.offset.row {
427427 return;
428428 }
429429+ let y = y - self.offset.row as u16;
429430 self.surface
430431 .set_string(x, y + self.viewport.y, string, style)
431432 }
···434435 if (y as usize) < self.offset.row {
435436 return;
436437 }
438438+ let y = y - self.offset.row as u16;
437439 self.surface
438440 .set_stringn(x, y + self.viewport.y, string, width, style);
439441 }
···441443 /// Sets the style of an area **within the text viewport* this accounts
442444 /// both for the renderers vertical offset and its viewport
443445 pub fn set_style(&mut self, mut area: Rect, style: Style) {
444444- area = area.clip_top(self.offset.row as u16);
445445- area.y += self.viewport.y;
446446+ let offset = self.offset.row as u16;
447447+ if area.y < offset {
448448+ area.height = area.height.saturating_sub(offset - area.y);
449449+ area.y = offset;
450450+ }
451451+ area.y = area.y - offset + self.viewport.y;
446452 self.surface.set_style(area, style);
447453 }
448454···460466 if (y as usize) < self.offset.row {
461467 return (x, y);
462468 }
469469+ let y = y - self.offset.row as u16;
463470 self.surface.set_string_truncated(
464471 x,
465472 y + self.viewport.y,