Properly check that colours are valid
Don't recolour an already coloured pixel
Actually find uncoloured adjacent pixels and enqueue 'em