 			if (wProp.specifiedValue() == 'auto')
 			{
 				var outerWidthProp : CSSProperty = styles.getStyle('outerWidth');
-				if (outerWidthProp != null && 
-					outerWidthProp.specifiedValue() != 'auto')
+				if (outerWidthProp && outerWidthProp.specifiedValue() != 'auto')
 				{
 					var specOuterWidth : Number;
 					if (outerWidthProp.isRelativeValue())
 					{
 						specOuterWidth = Math.round(
-							outerWidthProp.resolveRelativeValueTo(parentW));
+							outerWidthProp.resolveRelativeValueTo(parentW, this));
 					}
 					else
 					{

			var parentW:Number = m_containingBlock.m_currentStyles.width;
			var parentH:Number = m_containingBlock.m_currentStyles.height;
			
			var propsResolvableToContainingWidth:Array = 
			[
				'marginTop',
				'marginBottom',
				'marginLeft',
				'marginRight',
				'paddingTop',
				'paddingBottom',
				'paddingLeft',
				'paddingRight'
			];
			resolvePropsToValue(styles, propsResolvableToContainingWidth, parentW);
			
			var wProp : CSSProperty = styles.getStyle('width');
			var hProp : CSSProperty = styles.getStyle('height');

		protected function resolvePropsToValue(styles : CSSDeclaration, 
			props : Array, baseValue : Number) : void
		{
			for (var i : int = props.length; i--;)
			{
				var propName:String = props[i][0];
				var cssProperty:CSSProperty = styles.getStyle(propName);
				if (cssProperty)
				{
