Still being a challenge, but Ive got a couple of bits sorted.

To stop the paint_fill function replicating insanely, use this barely modified one.
Code:
function paint_fill(VECTOR* pPos)
{
	paint_pixel2 = pixel_for_bmap(paint_bmap,pPos.x,pPos.y);
	pixel_to_vec(pv_a,NULL,paint_txtype,paint_pixel2);
	paint_point(pPos,pv_d);  //Only line changed, moved up from bottom of function.
	if (pPos.x>0)
	{
		paint_pixel = pixel_for_bmap(paint_bmap,pPos.x-1,pPos.y);
		pixel_to_vec(pv_b,NULL,paint_txtype,paint_pixel);
		if (vec_dist(pv_a,pv_b)<=16) paint_fill(vector(pPos.x-1,pPos.y,0));
	}
	if (pPos.y>0)
	{
		paint_pixel = pixel_for_bmap(paint_bmap,pPos.x,pPos.y-1);
		pixel_to_vec(pv_b,NULL,paint_txtype,paint_pixel);
		if (vec_dist(pv_a,pv_b)<=16) paint_fill(vector(pPos.x,pPos.y-1,0));
	}
	if (pPos.x<paint_w)
	{
		paint_pixel = pixel_for_bmap(paint_bmap,pPos.x+1,pPos.y);
		pixel_to_vec(pv_b,NULL,paint_txtype,paint_pixel);
		if (vec_dist(pv_a,pv_b)<=16) paint_fill(vector(pPos.x+1,pPos.y,0));
	}
	if (pPos.y<paint_h)
	{
		paint_pixel = pixel_for_bmap(paint_bmap,pPos.x,pPos.y+1);
		pixel_to_vec(pv_b,NULL,paint_txtype,paint_pixel);
		if (vec_dist(pv_a,pv_b)<=16) paint_fill(vector(pPos.x,pPos.y+1,0));
	}
}
But it still wont work on any bitmaps larger than 32x32. Works with 32x32 pixels but fails with 64x64. Far from good enough.
Still working on this one.


"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial