Vou passar uma dica de como criar uma forma diferente nos sprites (é como se estivéssemos usando máscaras). Já passei essa dica em posts, mas como o pessoal não manda um feedback se deu certo ou não, tenho a impressão de que nem entenderam.
Acho esse jeito melhor do que usar surfaces e é mais fácil, também. Tudo consiste em criar uma imagem preto-e-branco para servir como referência de alpha e usar a função sprite_set_alpha_from_sprite. O que estiver preto, ficará invisível e o que estiver branco, visível.
Você pode usar um sprite colorido como máscara, mas o Game Maker vai usar a luminosidade de qualquer forma. Essa função permite gradação de luminosidade, como deixei em um dos exemplos.
Sprite original:
Máscara:
Você poderia criar uma gama imensa de efeitos no seu jogo com isso, além de ser um recurso inteligente que ajuda a reduzir o tamanho do executável, pois em vez de criar outro sprite animado, só vai ser necessário criar outra máscara estática. Pra deixar mais legal ainda, você poderia até fazer uma animação via código, mexendo na escala ou na rotação do sprite.
Fiz um jogo de quebra-cabeças assim uma vez. Usei essa função pra recortar as peças e um blend pra criar um relevo. É legal porque você pode deixar o jogador personalizar a imagem, como uma foto de família, por exemplo.