Index: src/parse/propstrings.h
===================================================================
--- src/parse/propstrings.h	(revision 10940)
+++ src/parse/propstrings.h	(working copy)
@@ -84,7 +84,7 @@
 	NE_RESIZE, NW_RESIZE, N_RESIZE, SE_RESIZE, SW_RESIZE, S_RESIZE, 
 	W_RESIZE, TEXT, WAIT, HELP, PROGRESS, SERIF, SANS_SERIF, CURSIVE, 
 	FANTASY, MONOSPACE, MALE, FEMALE, CHILD, MIX, UNDERLINE, OVERLINE, 
-	LINE_THROUGH, BLINK, RGB, LIBCSS_LEFT, LIBCSS_CENTER, LIBCSS_RIGHT,
+	LINE_THROUGH, BLINK, RGB, RGBA, LIBCSS_LEFT, LIBCSS_CENTER, LIBCSS_RIGHT,
 
 	/* Named colours */
 	FIRST_COLOUR,
Index: src/parse/propstrings.c
===================================================================
--- src/parse/propstrings.c	(revision 10940)
+++ src/parse/propstrings.c	(working copy)
@@ -330,6 +330,7 @@
 	{ "line-through", SLEN("line-through") },
 	{ "blink", SLEN("blink") },
 	{ "rgb", SLEN("rgb") },
+	{ "rgba", SLEN("rgba") },
 	{ "-libcss-left", SLEN("-libcss-left") },
 	{ "-libcss-center", SLEN("-libcss-center") },
 	{ "-libcss-right", SLEN("-libcss-right") },
Index: src/parse/properties/utils.c
===================================================================
--- src/parse/properties/utils.c	(revision 10940)
+++ src/parse/properties/utils.c	(working copy)
@@ -31,14 +31,15 @@
 {
 	int orig_ctx = *ctx;
 	const css_token *token;
-	uint8_t r = 0, g = 0, b = 0;
+	uint8_t r = 0, g = 0, b = 0, a = 255;
 	bool match;
 	css_error error;
 
 	consumeWhitespace(vector, ctx);
 
 	/* IDENT(<colour name>) | HASH(rgb | rrggbb) |
-	 * FUNCTION(rgb) [ [ NUMBER | PERCENTAGE ] ',' ] {3} ')'
+	 * FUNCTION(rgb) '(' [ [ NUMBER | PERCENTAGE ] ',' ] {3} ')' |
+	 * FUNCTION(rgba) '(' [ [ NUMBER | PERCENTAGE ] ',' ] {3} ',' [ NUMBER | PERCENTAGE ]  ')'
 	 *
 	 * For quirks, NUMBER | DIMENSION | IDENT, too
 	 * I.E. "123456" -> NUMBER, "1234f0" -> DIMENSION, "f00000" -> IDENT
@@ -91,17 +92,21 @@
 
 		return error;
 	} else if (token->type == CSS_TOKEN_FUNCTION) {
-		if ((lwc_string_caseless_isequal(
-				token->idata, c->strings[RGB],
-				&match) == lwc_error_ok && match)) {
+    int ncomponents = 3;
+		if ((lwc_string_caseless_isequal(token->idata, c->strings[RGB], &match) ==
+		      lwc_error_ok && match) ||
+		    (lwc_string_caseless_isequal(token->idata, c->strings[RGBA], &match) ==
+		      lwc_error_ok && match && (ncomponents = 4))) {
 			int i;
 			css_token_type valid = CSS_TOKEN_NUMBER;
 
-			for (i = 0; i < 3; i++) {
+			for (i = 0; i < ncomponents; i++) {
 				css_fixed num;
 				size_t consumed = 0;
 				uint8_t *component = i == 0 ? &r
-							    : i == 1 ? &g : &b;
+							                      : i == 1 ? &g
+							                      : i == 2 ? &b
+							                      : &a;
 				int32_t intval;
 
 				consumeWhitespace(vector, ctx);
@@ -119,16 +124,20 @@
 					goto invalid;
 
 				num = number_from_lwc_string(token->idata,
-						valid == CSS_TOKEN_NUMBER,
+						i != 3, // int only?
 						&consumed);
-				if (consumed != lwc_string_length(token->idata))
+				if (consumed != lwc_string_length(token->idata)) {
 					goto invalid;
+				}
 
 				if (valid == CSS_TOKEN_NUMBER) {
-					intval = FIXTOINT(num);
+				  if (i == 3) {
+            intval = FIXTOINT(FMULI(num, 255));
+			    } else {
+					  intval = FIXTOINT(num);
+				  }
 				} else {
-					intval = FIXTOINT(
-						FDIVI(FMULI(num, 255), 100));
+					intval = FIXTOINT(FDIVI(FMULI(num, 255), 100));
 				}
 
 				if (intval > 255)
@@ -145,19 +154,28 @@
 				token = parserutils_vector_peek(vector, *ctx);
 				if (token == NULL)
 					goto invalid;
-
-				if (i != 2 && tokenIsChar(token, ','))
-					parserutils_vector_iterate(vector, ctx);
-				else if (i == 2 && tokenIsChar(token, ')'))
-					parserutils_vector_iterate(vector, ctx);
-				else
-					goto invalid;
+        
+        if (ncomponents == 4) {
+  				if (i != 3 && tokenIsChar(token, ','))
+  					parserutils_vector_iterate(vector, ctx);
+  				else if (i == 3 && tokenIsChar(token, ')'))
+  					parserutils_vector_iterate(vector, ctx);
+  				else
+  					goto invalid;
+				} else {
+  				if (i != 2 && tokenIsChar(token, ','))
+  					parserutils_vector_iterate(vector, ctx);
+  				else if (i == 2 && tokenIsChar(token, ')'))
+  					parserutils_vector_iterate(vector, ctx);
+  				else
+  					goto invalid;
+				}
 			}
 		} else
 			goto invalid;
 	}
 
-	*result = (r << 24) | (g << 16) | (b << 8);
+	*result = (r << 24) | (g << 16) | (b << 8) | a;
 
 	return CSS_OK;
 
@@ -179,156 +197,156 @@
 		uint32_t *result)
 {
 	static const uint32_t colourmap[LAST_COLOUR + 1 - FIRST_COLOUR] = {
-		0xf0f8ff00, /* ALICEBLUE */
-		0xfaebd700, /* ANTIQUEWHITE */
-		0x00ffff00, /* AQUA */
-		0x7fffd400, /* AQUAMARINE */
-		0xf0ffff00, /* AZURE */
-		0xf5f5dc00, /* BEIGE */
-		0xffe4c400, /* BISQUE */
-		0x00000000, /* BLACK */
-		0xffebcd00, /* BLANCHEDALMOND */
-		0x0000ff00, /* BLUE */
-		0x8a2be200, /* BLUEVIOLET */
-		0xa52a2a00, /* BROWN */
-		0xdeb88700, /* BURLYWOOD */
-		0x5f9ea000, /* CADETBLUE */
-		0x7fff0000, /* CHARTREUSE */
-		0xd2691e00, /* CHOCOLATE */
-		0xff7f5000, /* CORAL */
-		0x6495ed00, /* CORNFLOWERBLUE */
-		0xfff8dc00, /* CORNSILK */
-		0xdc143c00, /* CRIMSON */
-		0x00ffff00, /* CYAN */
-		0x00008b00, /* DARKBLUE */
-		0x008b8b00, /* DARKCYAN */
-		0xb8860b00, /* DARKGOLDENROD */
-		0xa9a9a900, /* DARKGRAY */
-		0x00640000, /* DARKGREEN */
-		0xa9a9a900, /* DARKGREY */
-		0xbdb76b00, /* DARKKHAKI */
-		0x8b008b00, /* DARKMAGENTA */
-		0x556b2f00, /* DARKOLIVEGREEN */
-		0xff8c0000, /* DARKORANGE */
-		0x9932cc00, /* DARKORCHID */
-		0x8b000000, /* DARKRED */
-		0xe9967a00, /* DARKSALMON */
-		0x8fbc8f00, /* DARKSEAGREEN */
-		0x483d8b00, /* DARKSLATEBLUE */
-		0x2f4f4f00, /* DARKSLATEGRAY */
-		0x2f4f4f00, /* DARKSLATEGREY */
-		0x00ced100, /* DARKTURQUOISE */
-		0x9400d300, /* DARKVIOLET */
-		0xff149300, /* DEEPPINK */
-		0x00bfff00, /* DEEPSKYBLUE */
-		0x69696900, /* DIMGRAY */
-		0x69696900, /* DIMGREY */
-		0x1e90ff00, /* DODGERBLUE */
-		0xd1927500, /* FELDSPAR */
-		0xb2222200, /* FIREBRICK */
-		0xfffaf000, /* FLORALWHITE */
-		0x228b2200, /* FORESTGREEN */
-		0xff00ff00, /* FUCHSIA */
-		0xdcdcdc00, /* GAINSBORO */
-		0xf8f8ff00, /* GHOSTWHITE */
-		0xffd70000, /* GOLD */
-		0xdaa52000, /* GOLDENROD */
-		0x80808000, /* GRAY */
-		0x00800000, /* GREEN */
-		0xadff2f00, /* GREENYELLOW */
-		0x80808000, /* GREY */
-		0xf0fff000, /* HONEYDEW */
-		0xff69b400, /* HOTPINK */
-		0xcd5c5c00, /* INDIANRED */
-		0x4b008200, /* INDIGO */
-		0xfffff000, /* IVORY */
-		0xf0e68c00, /* KHAKI */
-		0xe6e6fa00, /* LAVENDER */
-		0xfff0f500, /* LAVENDERBLUSH */
-		0x7cfc0000, /* LAWNGREEN */
-		0xfffacd00, /* LEMONCHIFFON */
-		0xadd8e600, /* LIGHTBLUE */
-		0xf0808000, /* LIGHTCORAL */
-		0xe0ffff00, /* LIGHTCYAN */
-		0xfafad200, /* LIGHTGOLDENRODYELLOW */
-		0xd3d3d300, /* LIGHTGRAY */
-		0x90ee9000, /* LIGHTGREEN */
-		0xd3d3d300, /* LIGHTGREY */
-		0xffb6c100, /* LIGHTPINK */
-		0xffa07a00, /* LIGHTSALMON */
-		0x20b2aa00, /* LIGHTSEAGREEN */
-		0x87cefa00, /* LIGHTSKYBLUE */
-		0x8470ff00, /* LIGHTSLATEBLUE */
-		0x77889900, /* LIGHTSLATEGRAY */
-		0x77889900, /* LIGHTSLATEGREY */
-		0xb0c4de00, /* LIGHTSTEELBLUE */
-		0xffffe000, /* LIGHTYELLOW */
-		0x00ff0000, /* LIME */
-		0x32cd3200, /* LIMEGREEN */
-		0xfaf0e600, /* LINEN */
-		0xff00ff00, /* MAGENTA */
-		0x80000000, /* MAROON */
-		0x66cdaa00, /* MEDIUMAQUAMARINE */
-		0x0000cd00, /* MEDIUMBLUE */
-		0xba55d300, /* MEDIUMORCHID */
-		0x9370db00, /* MEDIUMPURPLE */
-		0x3cb37100, /* MEDIUMSEAGREEN */
-		0x7b68ee00, /* MEDIUMSLATEBLUE */
-		0x00fa9a00, /* MEDIUMSPRINGGREEN */
-		0x48d1cc00, /* MEDIUMTURQUOISE */
-		0xc7158500, /* MEDIUMVIOLETRED */
-		0x19197000, /* MIDNIGHTBLUE */
-		0xf5fffa00, /* MINTCREAM */
-		0xffe4e100, /* MISTYROSE */
-		0xffe4b500, /* MOCCASIN */
-		0xffdead00, /* NAVAJOWHITE */
-		0x00008000, /* NAVY */
-		0xfdf5e600, /* OLDLACE */
-		0x80800000, /* OLIVE */
-		0x6b8e2300, /* OLIVEDRAB */
-		0xffa50000, /* ORANGE */
-		0xff450000, /* ORANGERED */
-		0xda70d600, /* ORCHID */
-		0xeee8aa00, /* PALEGOLDENROD */
-		0x98fb9800, /* PALEGREEN */
-		0xafeeee00, /* PALETURQUOISE */
-		0xdb709300, /* PALEVIOLETRED */
-		0xffefd500, /* PAPAYAWHIP */
-		0xffdab900, /* PEACHPUFF */
-		0xcd853f00, /* PERU */
-		0xffc0cb00, /* PINK */
-		0xdda0dd00, /* PLUM */
-		0xb0e0e600, /* POWDERBLUE */
-		0x80008000, /* PURPLE */
-		0xff000000, /* RED */
-		0xbc8f8f00, /* ROSYBROWN */
-		0x4169e100, /* ROYALBLUE */
-		0x8b451300, /* SADDLEBROWN */
-		0xfa807200, /* SALMON */
-		0xf4a46000, /* SANDYBROWN */
-		0x2e8b5700, /* SEAGREEN */
-		0xfff5ee00, /* SEASHELL */
-		0xa0522d00, /* SIENNA */
-		0xc0c0c000, /* SILVER */
-		0x87ceeb00, /* SKYBLUE */
-		0x6a5acd00, /* SLATEBLUE */
-		0x70809000, /* SLATEGRAY */
-		0x70809000, /* SLATEGREY */
-		0xfffafa00, /* SNOW */
-		0x00ff7f00, /* SPRINGGREEN */
-		0x4682b400, /* STEELBLUE */
-		0xd2b48c00, /* TAN */
-		0x00808000, /* TEAL */
-		0xd8bfd800, /* THISTLE */
-		0xff634700, /* TOMATO */
-		0x40e0d000, /* TURQUOISE */
-		0xee82ee00, /* VIOLET */
-		0xd0209000, /* VIOLETRED */
-		0xf5deb300, /* WHEAT */
-		0xffffff00, /* WHITE */
-		0xf5f5f500, /* WHITESMOKE */
-		0xffff0000, /* YELLOW */
-		0x9acd3200  /* YELLOWGREEN */
+		0xf0f8ffff, /* ALICEBLUE */
+		0xfaebd7ff, /* ANTIQUEWHITE */
+		0x00ffffff, /* AQUA */
+		0x7fffd4ff, /* AQUAMARINE */
+		0xf0ffffff, /* AZURE */
+		0xf5f5dcff, /* BEIGE */
+		0xffe4c4ff, /* BISQUE */
+		0x000000ff, /* BLACK */
+		0xffebcdff, /* BLANCHEDALMOND */
+		0x0000ffff, /* BLUE */
+		0x8a2be2ff, /* BLUEVIOLET */
+		0xa52a2aff, /* BROWN */
+		0xdeb887ff, /* BURLYWOOD */
+		0x5f9ea0ff, /* CADETBLUE */
+		0x7fff00ff, /* CHARTREUSE */
+		0xd2691eff, /* CHOCOLATE */
+		0xff7f50ff, /* CORAL */
+		0x6495edff, /* CORNFLOWERBLUE */
+		0xfff8dcff, /* CORNSILK */
+		0xdc143cff, /* CRIMSON */
+		0x00ffffff, /* CYAN */
+		0x00008bff, /* DARKBLUE */
+		0x008b8bff, /* DARKCYAN */
+		0xb8860bff, /* DARKGOLDENROD */
+		0xa9a9a9ff, /* DARKGRAY */
+		0x006400ff, /* DARKGREEN */
+		0xa9a9a9ff, /* DARKGREY */
+		0xbdb76bff, /* DARKKHAKI */
+		0x8b008bff, /* DARKMAGENTA */
+		0x556b2fff, /* DARKOLIVEGREEN */
+		0xff8c00ff, /* DARKORANGE */
+		0x9932ccff, /* DARKORCHID */
+		0x8b0000ff, /* DARKRED */
+		0xe9967aff, /* DARKSALMON */
+		0x8fbc8fff, /* DARKSEAGREEN */
+		0x483d8bff, /* DARKSLATEBLUE */
+		0x2f4f4fff, /* DARKSLATEGRAY */
+		0x2f4f4fff, /* DARKSLATEGREY */
+		0x00ced1ff, /* DARKTURQUOISE */
+		0x9400d3ff, /* DARKVIOLET */
+		0xff1493ff, /* DEEPPINK */
+		0x00bfffff, /* DEEPSKYBLUE */
+		0x696969ff, /* DIMGRAY */
+		0x696969ff, /* DIMGREY */
+		0x1e90ffff, /* DODGERBLUE */
+		0xd19275ff, /* FELDSPAR */
+		0xb22222ff, /* FIREBRICK */
+		0xfffaf0ff, /* FLORALWHITE */
+		0x228b22ff, /* FORESTGREEN */
+		0xff00ffff, /* FUCHSIA */
+		0xdcdcdcff, /* GAINSBORO */
+		0xf8f8ffff, /* GHOSTWHITE */
+		0xffd700ff, /* GOLD */
+		0xdaa520ff, /* GOLDENROD */
+		0x808080ff, /* GRAY */
+		0x008000ff, /* GREEN */
+		0xadff2fff, /* GREENYELLOW */
+		0x808080ff, /* GREY */
+		0xf0fff0ff, /* HONEYDEW */
+		0xff69b4ff, /* HOTPINK */
+		0xcd5c5cff, /* INDIANRED */
+		0x4b0082ff, /* INDIGO */
+		0xfffff0ff, /* IVORY */
+		0xf0e68cff, /* KHAKI */
+		0xe6e6faff, /* LAVENDER */
+		0xfff0f5ff, /* LAVENDERBLUSH */
+		0x7cfc00ff, /* LAWNGREEN */
+		0xfffacdff, /* LEMONCHIFFON */
+		0xadd8e6ff, /* LIGHTBLUE */
+		0xf08080ff, /* LIGHTCORAL */
+		0xe0ffffff, /* LIGHTCYAN */
+		0xfafad2ff, /* LIGHTGOLDENRODYELLOW */
+		0xd3d3d3ff, /* LIGHTGRAY */
+		0x90ee90ff, /* LIGHTGREEN */
+		0xd3d3d3ff, /* LIGHTGREY */
+		0xffb6c1ff, /* LIGHTPINK */
+		0xffa07aff, /* LIGHTSALMON */
+		0x20b2aaff, /* LIGHTSEAGREEN */
+		0x87cefaff, /* LIGHTSKYBLUE */
+		0x8470ffff, /* LIGHTSLATEBLUE */
+		0x778899ff, /* LIGHTSLATEGRAY */
+		0x778899ff, /* LIGHTSLATEGREY */
+		0xb0c4deff, /* LIGHTSTEELBLUE */
+		0xffffe0ff, /* LIGHTYELLOW */
+		0x00ff00ff, /* LIME */
+		0x32cd32ff, /* LIMEGREEN */
+		0xfaf0e6ff, /* LINEN */
+		0xff00ffff, /* MAGENTA */
+		0x800000ff, /* MAROON */
+		0x66cdaaff, /* MEDIUMAQUAMARINE */
+		0x0000cdff, /* MEDIUMBLUE */
+		0xba55d3ff, /* MEDIUMORCHID */
+		0x9370dbff, /* MEDIUMPURPLE */
+		0x3cb371ff, /* MEDIUMSEAGREEN */
+		0x7b68eeff, /* MEDIUMSLATEBLUE */
+		0x00fa9aff, /* MEDIUMSPRINGGREEN */
+		0x48d1ccff, /* MEDIUMTURQUOISE */
+		0xc71585ff, /* MEDIUMVIOLETRED */
+		0x191970ff, /* MIDNIGHTBLUE */
+		0xf5fffaff, /* MINTCREAM */
+		0xffe4e1ff, /* MISTYROSE */
+		0xffe4b5ff, /* MOCCASIN */
+		0xffdeadff, /* NAVAJOWHITE */
+		0x000080ff, /* NAVY */
+		0xfdf5e6ff, /* OLDLACE */
+		0x808000ff, /* OLIVE */
+		0x6b8e23ff, /* OLIVEDRAB */
+		0xffa500ff, /* ORANGE */
+		0xff4500ff, /* ORANGERED */
+		0xda70d6ff, /* ORCHID */
+		0xeee8aaff, /* PALEGOLDENROD */
+		0x98fb98ff, /* PALEGREEN */
+		0xafeeeeff, /* PALETURQUOISE */
+		0xdb7093ff, /* PALEVIOLETRED */
+		0xffefd5ff, /* PAPAYAWHIP */
+		0xffdab9ff, /* PEACHPUFF */
+		0xcd853fff, /* PERU */
+		0xffc0cbff, /* PINK */
+		0xdda0ddff, /* PLUM */
+		0xb0e0e6ff, /* POWDERBLUE */
+		0x800080ff, /* PURPLE */
+		0xff0000ff, /* RED */
+		0xbc8f8fff, /* ROSYBROWN */
+		0x4169e1ff, /* ROYALBLUE */
+		0x8b4513ff, /* SADDLEBROWN */
+		0xfa8072ff, /* SALMON */
+		0xf4a460ff, /* SANDYBROWN */
+		0x2e8b57ff, /* SEAGREEN */
+		0xfff5eeff, /* SEASHELL */
+		0xa0522dff, /* SIENNA */
+		0xc0c0c0ff, /* SILVER */
+		0x87ceebff, /* SKYBLUE */
+		0x6a5acdff, /* SLATEBLUE */
+		0x708090ff, /* SLATEGRAY */
+		0x708090ff, /* SLATEGREY */
+		0xfffafaff, /* SNOW */
+		0x00ff7fff, /* SPRINGGREEN */
+		0x4682b4ff, /* STEELBLUE */
+		0xd2b48cff, /* TAN */
+		0x008080ff, /* TEAL */
+		0xd8bfd8ff, /* THISTLE */
+		0xff6347ff, /* TOMATO */
+		0x40e0d0ff, /* TURQUOISE */
+		0xee82eeff, /* VIOLET */
+		0xd02090ff, /* VIOLETRED */
+		0xf5deb3ff, /* WHEAT */
+		0xffffffff, /* WHITE */
+		0xf5f5f5ff, /* WHITESMOKE */
+		0xffff00ff, /* YELLOW */
+		0x9acd32ff  /* YELLOWGREEN */
 	};
 	int i;
 	bool match;
@@ -382,7 +400,7 @@
 	} else
 		return CSS_INVALID;
 
-	*result = (r << 24) | (g << 16) | (b << 8);
+	*result = (r << 24) | (g << 16) | (b << 8) | 0xff;
 
 	return CSS_OK;
 }
Index: examples/example1.c
===================================================================
--- examples/example1.c	(revision 10940)
+++ examples/example1.c	(working copy)
@@ -116,8 +116,10 @@
 	css_stylesheet *sheet;
 	size_t size;
 	const char data[] = "h1 { color: red } "
-		"h4 { color: #321; } "
-		"h4, h5 { color: #123456; ";
+		"h2 { color: rgba(16,16,16,0.2); } "
+		"h3 { color: rgb(16,16,16); } "
+		"h4 { color: #101010; } "
+		"h5, h6 { color: #123456; ";
 	css_select_ctx *select_ctx;
 	uint32_t count;
 	unsigned int hh;
