I'm carving letters on a cylinder with the Boolean difference operator.
This worked well for a while, but suddenly a strange result became to occur:

As you can see, a part of the letter made a pit in the cylinder (as intended), while outside part produced "walls" around the letter edge.
I already checked for broken normals and duplicate vertices.
Also, I can not see mesh geometry when I switch to wireframe shading (not sure if it's releated):

The file itself can be downloaded from here: https://drive.google.com/open?id=0B8QGeF3SuAgTRXNyZ2xsZVV4Tk0
What do I need to fix to make this operation work correctly?