diff --git a/gui/button.cpp b/gui/button.cpp
index b9d1b52..a4c5ecb 100644
--- a/gui/button.cpp
+++ b/gui/button.cpp
@@ -37,6 +37,8 @@
     mButtonLabel = NULL;
     mAction = NULL;
     mRendered = false;
+	hasHighlightColor = false;
+	renderHighlight = false;
 
     if (!node)  return;
 
@@ -66,6 +68,17 @@
             mButtonIcon = PageManager::FindResource(attr->value());
     }
 
+	memset(&mHighlightColor, 0, sizeof(COLOR));
+	child = node->first_node("highlight");
+	if (child) {
+		attr = child->first_attribute("color");
+		if (attr) {
+			hasHighlightColor = true;
+			std::string color = attr->value();
+			ConvertStrToColor(color, &mHighlightColor);
+		}
+	}
+
     int x, y, w, h;
     if (mButtonImg)     mButtonImg->GetRenderPos(x, y, w, h);
     SetRenderPos(x, y, w, h);
@@ -96,6 +109,10 @@
         gr_blit(mButtonIcon->GetResource(), 0, 0, mIconW, mIconH, mIconX, mIconY);
     if (mButtonLabel)   ret = mButtonLabel->Render();
     if (ret < 0)        return ret;
+	if (renderHighlight && hasHighlightColor) {
+		gr_color(mHighlightColor.red, mHighlightColor.green, mHighlightColor.blue, mHighlightColor.alpha);
+		gr_fill(mRenderX, mRenderY, mRenderW, mRenderH);
+	}
     mRendered = true;
     return ret;
 }
@@ -198,6 +215,7 @@
 				mButtonLabel->isHighlighted = false;
 			if (mButtonImg != NULL)
 				mButtonImg->isHighlighted = false;
+			renderHighlight = false;
 			mRendered = false;
 		}
 	} else {
@@ -207,6 +225,7 @@
 				mButtonLabel->isHighlighted = true;
 			if (mButtonImg != NULL)
 				mButtonImg->isHighlighted = true;
+			renderHighlight = true;
 			mRendered = false;
 		}
 	}
