Index: code/hud/hudmessage.cpp
===================================================================
--- code/hud/hudmessage.cpp	(revision 11090)
+++ code/hud/hudmessage.cpp	(working copy)
@@ -1227,7 +1227,9 @@
 {
 	anim_play_struct aps;
 
-	anim_play_init(&aps, anim_data, position[0] + Anim_offsets[0] + fl2i(HUD_offset_x), position[1] + Anim_offsets[1] + fl2i(HUD_offset_y), base_w, base_h);
+	float scale_x = i2fl(Anim_size[0]) / i2fl(anim_data->width);
+	float scale_y = i2fl(Anim_size[1]) / i2fl(anim_data->height);
+	anim_play_init(&aps, anim_data, fl2ir((position[0] + Anim_offsets[0] + HUD_offset_x) / scale_x), fl2ir((position[1] + Anim_offsets[1] + HUD_offset_y) / scale_y), base_w, base_h);
 	aps.start_at = anim_start_frame;
 
 	// aps.color = &HUD_color_defaults[HUD_color_alpha];
@@ -1261,10 +1263,13 @@
 			resetClip();
 
 			renderBitmap(Head_frame.first_frame, position[0], position[1]);		// head ani border
-			gr_set_screen_scale(base_w, base_h);
+			float scale_x = i2fl(Anim_size[0]) / i2fl(head_anim->width);
+			float scale_y = i2fl(Anim_size[1]) / i2fl(head_anim->height);
+			gr_set_screen_scale(fl2ir(base_w / scale_x), fl2ir(base_h / scale_y));
 			setGaugeColor();
-			generic_anim_render(head_anim,frametime, position[0] + Anim_offsets[0] + fl2i(HUD_offset_x), position[1] + Anim_offsets[1] + fl2i(HUD_offset_y));
+			generic_anim_render(head_anim,frametime, fl2ir((position[0] + Anim_offsets[0] + HUD_offset_x) / scale_x), fl2ir((position[1] + Anim_offsets[1] + HUD_offset_y) / scale_y));
 			// draw title
+			gr_set_screen_scale(base_w, base_h);
 			renderString(position[0] + Header_offsets[0], position[1] + Header_offsets[1], XSTR("message", 217));
 		} else {
 			for (int j = 0; j < Num_messages_playing; ++j) {
Index: code/hud/hudparse.cpp
===================================================================
--- code/hud/hudparse.cpp	(revision 11090)
+++ code/hud/hudparse.cpp	(working copy)
@@ -3743,8 +3743,12 @@
 		stuff_int_list(Anim_offsets, 2);
 	}
 	if(optional_string("Animation Background Size:")) {
+		mprintf(("Animation Background Size in hud_gauges.tbl and -hdg.tbms is deprecated. Use \"Animation Size\" instead.\n"));
 		stuff_int_list(Anim_size, 2);
 	}
+	if(optional_string("Animation Size:")) {
+		stuff_int_list(Anim_size, 2);
+	}
 
 	hud_gauge->initAnimOffsets(Anim_offsets[0], Anim_offsets[1]);
 	hud_gauge->initAnimSizes(Anim_size[0], Anim_size[1]);
