Also
label: does quite a lot of tweeking to get the 'right' image size for the given string and font settings.
whcih makes aligning a
label: with
-annotate some what difficult.
The ONLY reason I see for using
label: for
-annotate is to get a starting canvas of the right size, and then do all your drawing using
-annotate. I would however clear the initial
label: image (leaving a blank image canvas) before using
-annotate.
This technique is demonstrated in IM Examples,Automatically Sized Annotated Text Canvases
http://www.imagemagick.org/Usage/text/#annotate_size
Looking at the example it was difficult to determine for() loop is doing. There is no comment in the code explaining the reason for it (adding minimal comments is good coding practice). Eventually I figured it was generating an animation, something that is LOST when explaining the problem due to the image_hosts actions.
An alternative method of doing this (without needing a loop) , is...
IM Examples, Animation Modifications, Glitter Animations
http://www.imagemagick.org/Usage/anim_mods/#glitter
that is not to say you example is not correct, and seems quite a valid technique. I have used similar techniques myself (before -distort allowed for better technqiues).
I can not find anything wrong with the example that would cause the 'blocks of black' shown.
My only thought is that it is being generated by some interaction with the input 'glitter tile pattern'. Without those patterns it is going to be very hard to help you further. Simplify and provide input images so that we try out and actually test it on our systems. The act of reducing the example would actually help you (and help us) pinpoint the actual source of the problem.