The array transform routine, as posted above executes in 4.66ms on my test hardware (18F46K42 @64MHz).
It's a small improvement but I managed to reduce that to 4.28ms by changing it into two FOR/NEXT loops, one for odd, one for even rows.
Code:
    FOR Col = 0 To 30 Step 2
        InPtr = (TempW + Col)
        led[InPtr] = lednew[InPtr]
        OutPtr = InPtr
       
        IF led[InPtr] > 0 THEN
           NeoLed(OutPtr) = Led[InPtr]	
           alive = alive + 1
           dead = dead + InPtr
        ELSE
            NeoLED(OutPtr) = 0
        ENDIF
    NEXT
    
    FOR Col = 1 To 31 Step 2    ' Odd rows
        InPtr = (TempW + Col)
        led[InPtr] = lednew[InPtr]
        OutPtr = (TempW) + (31-Col)   'Reversed order
        
        IF led[InPtr] > 0 THEN
           NeoLed(OutPtr) = Led[InPtr]	
           alive = alive + 1
           dead = dead + InPtr
        ELSE
           NeoLED(OutPtr) = 0
        ENDIF
    NEXT
I must point out though that I don't have the arrays populated with anything so their values are always zero which obviously will have an effect.