diff --git a/esphome/components/display/display.cpp b/esphome/components/display/display.cpp
index b12a81e050..a13464ce1b 100644
--- a/esphome/components/display/display.cpp
+++ b/esphome/components/display/display.cpp
@@ -555,10 +555,10 @@ void Display::get_text_bounds(int x, int y, const char *text, BaseFont *font, Te
 
   switch (x_align) {
     case TextAlign::RIGHT:
-      *x1 = x - *width;
+      *x1 = x - *width - x_offset;
       break;
     case TextAlign::CENTER_HORIZONTAL:
-      *x1 = x - (*width) / 2;
+      *x1 = x - (*width + x_offset) / 2;
       break;
     case TextAlign::LEFT:
     default: