Although I cannot test it easily myself because of the missing bitmaps, I can see that it works quite well in your youtube video, good job! The reason for the relatively low framerate probably is the use of pixel instructions, they are very slow. As HeelX already has mentioned, a shader would speed up the whole process remarkably.
(And just ignore ratchet's post.)