Sorted it!

Here's my final code:
Code:
int VirtXtoPixels(int virtX)
	{
		int tmpAdd;
		int tmpWidth;
		if(!m_pParent)
			return (int)((double)virtX/GUI_SCALE * (double)RESX);

		tmpWidth = m_pParent->VirtXtoPixels(m_pParent->m_rPosition.right-m_pParent->m_rPosition.left);
		tmpAdd = m_pParent->VirtXtoPixels(m_pParent->m_rPosition.left);
		return (int)(virtX/GUI_SCALE * tmpWidth + tmpAdd);
		
	}
	int VirtYtoPixels(int virtY)
	{
		int tmpAdd;
		int tmpHeight;
		if(!m_pParent)
			return (int)((double)virtY/GUI_SCALE * (double)RESY);

		tmpHeight = m_pParent->VirtYtoPixels(m_pParent->m_rPosition.bottom-m_pParent->m_rPosition.top);
		tmpAdd = m_pParent->VirtYtoPixels(m_pParent->m_rPosition.top);
		return (int)(virtY/GUI_SCALE * tmpHeight + tmpAdd);
	}