Este código pode ser otimizado?

Tenho um código de processamento de imagem que faz loop em duas matrizes de bytes multidimensionais (do mesmo tamanho). Ele pega um valor da matriz de origem, executa um cálculo nela e armazena o resultado em outra matri

int xSize = ResultImageData.GetLength(0);
int ySize = ResultImageData.GetLength(1);

for (int x = 0; x < xSize; x++)
{                
   for (int y = 0; y < ySize; y++) 
   {                                                
      ResultImageData[x, y] = (byte)((CurrentImageData[x, y] * AlphaValue) +
                                    (AlphaImageData[x, y] * OneMinusAlphaValue));
   }
}

O loop atualmente leva ~ 11ms, o que eu assumo é principalmente devido ao acesso aos valores das matrizes de bytes, pois o cálculo é bastante simples (2 multiplicações e 1 adição

Existe algo que eu possa fazer para acelerar isso? É uma parte de tempo crítico do meu programa e esse código é chamado de 80 a 100 vezes por segundo; portanto, qualquer ganho de velocidade, por menor que seja, fará a diferença. No momento, também xSize = 768 e ySize = 576, mas isso aumentará no futur

Atualiza: Graças a Guffa (veja a resposta abaixo), o código a seguir economiza 4-5ms por loop. Embora sejainsegur código.

int size = ResultImageData.Length;
int counter = 0;
unsafe
{
    fixed (byte* r = ResultImageData, c = CurrentImageData, a = AlphaImageData)
    {
        while (size > 0)
        {
            *(r + counter) = (byte)(*(c + counter) * AlphaValue + 
                                    *(a + counter) * OneMinusAlphaValue);
            counter++;
            size--;
        }
    }
}

questionAnswers(14)

yourAnswerToTheQuestion