See: 2. When a transparent object passes over another, it occludes
"If you are using shader_set(), you may have to do the alpha test manually within the fragment shader. This is because GameMaker does not add the DoAlphaTest() function to the shader internally"