Index: uspace/lib/ui/src/pbutton.c
===================================================================
--- uspace/lib/ui/src/pbutton.c	(revision f2d4a46fb4506a376cf7cd0f623121df842b5348)
+++ uspace/lib/ui/src/pbutton.c	(revision 68d68e9763bdb1e3051435500a9dc659c164070d)
@@ -54,5 +54,7 @@
 enum {
 	ui_pb_press_dx = 1,
-	ui_pb_press_dy = 1
+	ui_pb_press_dy = 1,
+	ui_pb_pad_x = 2,
+	ui_pb_pad_x_text = 1
 };
 
@@ -323,4 +325,5 @@
 	gfx_text_fmt_t fmt;
 	gfx_rect_t rect;
+	gfx_rect_t irect;
 	gfx_coord_t thickness;
 	bool depressed;
@@ -360,4 +363,5 @@
 	} else {
 		/* Text decoration */
+		ui_paint_get_inset_frame_inside(pbutton->res, &rect, &irect);
 		gfx_text_fmt_init(&fmt);
 		fmt.font = pbutton->res->font;
@@ -365,4 +369,6 @@
 		fmt.halign = gfx_halign_center;
 		fmt.valign = gfx_valign_center;
+		fmt.abbreviate = true;
+		fmt.width = irect.p1.x - irect.p0.x - 2 * ui_pb_pad_x;
 
 		rc = gfx_puttext(&pos, &fmt, pbutton->caption);
@@ -442,4 +448,6 @@
 	fmt.halign = gfx_halign_center;
 	fmt.valign = gfx_valign_center;
+	fmt.abbreviate = true;
+	fmt.width = rect.p1.x - rect.p0.x - 2 * ui_pb_pad_x_text;
 
 	rc = gfx_puttext(&pos, &fmt, pbutton->caption);
