}
 
 void BattleState::RenderHeroTags(SDL_Surface *screen, const Vector<int> &offset) {
-       int uiHeight(BackgroundHeight() / 2), uiOffset(uiHeight);
-       int tagHeight((uiHeight - attackTypeMenu.IconHeight()) / 2);
-       int tagWidth((BackgroundWidth() - attackTypeMenu.IconWidth()) / 2);
+       int margin(attackTypeMenu.Height() / 48);
+       int tagHeight(attackTypeMenu.Height() - 2 * margin);
+       int tagWidth(attackTypeMenu.Width() * 2 + attackTypeMenu.Width() / 2 - 2 * margin);
+       int xOffset((BackgroundWidth() - 2 * tagWidth - 2 * margin) / 2);
 
        Point<int> tagPosition[4];
-       tagPosition[0] = Point<int>(0, uiOffset);
-       tagPosition[1] = Point<int>(tagWidth + attackTypeMenu.IconWidth(), uiOffset);
-       tagPosition[2] = Point<int>(0, uiOffset + tagHeight + attackTypeMenu.IconHeight());
-       tagPosition[3] = Point<int>(tagWidth + attackTypeMenu.IconWidth(), uiOffset + tagHeight + attackTypeMenu.IconHeight());
+       tagPosition[0] = Point<int>(xOffset, BackgroundHeight() - 2 * tagHeight - margin);
+       tagPosition[1] = Point<int>(xOffset + tagWidth + 2 * margin, BackgroundHeight() - 2 * tagHeight - margin);
+       tagPosition[2] = Point<int>(xOffset, BackgroundHeight() - tagHeight - margin);
+       tagPosition[3] = Point<int>(xOffset + tagWidth + 2 * margin, BackgroundHeight() - tagHeight - margin);
 
        for (vector<HeroTag>::size_type i(0), end(heroTags.size()); i < end; ++i) {
                heroTags[i].Render(screen, tagWidth, tagHeight, tagPosition[i] + offset, (int)i == activeHero);
 
 void SelectAttackType::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) {
        Point<int> position(
                        (battle->BackgroundWidth() - battle->GetAttackTypeMenu().Width()) / 2,
-                       (battle->BackgroundHeight() * 3 / 4) - (battle->GetAttackTypeMenu().Height() / 2));
+                       battle->BackgroundHeight() - battle->GetAttackTypeMenu().Height() - battle->GetAttackTypeMenu().Height() / 2);
        battle->GetAttackTypeMenu().Render(screen, position + offset);
 }
 
 
 void SelectMoveAction::RenderMenu(SDL_Surface *screen, const Vector<int> &offset) {
        Point<int> position(
                        (battle->BackgroundWidth() - battle->GetMoveMenu().Width()) / 2,
-                       (battle->BackgroundHeight() * 3 / 4) - (battle->GetMoveMenu().Height() / 2));
+                       battle->BackgroundHeight() - battle->GetMoveMenu().Height() - battle->GetMoveMenu().Height() / 2);
        battle->GetMoveMenu().Render(screen, position + offset);
 }