@@ -174,18 +174,45 @@
 	args.duration = args.duration || 400;
 	// Assign default color light yellow
 	var startColor = args.color || '#ffff99';
-	var endColor = dojo.style(node, "backgroundColor");
+	var endColor = dojo.style(node, "backgroundColor").toLowerCase();
+  	var bgImage = dojo.style(node, "backgroundImage");
 	var wasTransparent = (endColor == "transparent" || endColor == "rgba(0, 0, 0, 0)");
 
+	if ( wasTransparent ) {
+		// get inherited background color to use as endColor
+		var pNode = node;
+		do {
+			endColor = dojo.style(pNode , "backgroundColor");
+			if (endColor.toLowerCase() == "rgba(0, 0, 0, 0)") {
+				endColor = "transparent";
+			}
+			if (pNode == document.getElementsByTagName("body")[0]) {
+				pNode = null;
+				break;
+			}
+			pNode = pNode.parentNode;
+		} while (pNode && (endColor == "transparent"));
+	}
+
 	var anim = dojo.animateProperty(dojo.mixin({
 		properties: {
 			backgroundColor: { start: startColor, end: endColor }
 		}
 	}, args));
 
+	dojo.connect(anim, "beforeBegin", anim, function(){
+		if (bgImage) {
+			dojo.style( node, "backgroundImage", "none" );
+		}
+		// set startColor beforeBegin so can set delay on play()
+		dojo.style( node, "backgroundColor", startColor );
+	});
 	dojo.connect(anim, "onEnd", anim, function(){
-		if(wasTransparent){
-			node.style.backgroundColor = "transparent";
+		if (bgImage) {
+			dojo.style( node, "backgroundImage", bgImage );
+		}
+		if ( wasTransparent ) {
+			dojo.style( node, "backgroundColor", "transparent" );
 		}
 	});
 
