The motor runs at half the speed

As you can see, I am not using negative values for the analogWrite function. I'm using abs() to take the absolute value (which is always equal or greater than zero). And when the value es negative, I enable the pin that makes the motor turn in the opposirte direction. All of that is working, the motor turn proportionally from zero (RC stick in the middle) to maximum in both directions.

The problem is that it will never run at max speed. I took the example from here:
https://www.sparkfun.com/tutorials/348

He is doing basically the same, though he uses the -500,500 range:

Serial.println(map(ch2, 1000,2000,-500,500)); // center at 0

(just printing the values, he is not driving a motor here, but it's the same idea.)

I tried with -500,500 to worse results.

Blaming it to the L293B driver, I swapped the pin (HIGH or LOW, no PWM here) that goes to the input (direction) to the enable pin in the L293B and the motor ran at full speed.

Besides that, LEDS (and resistor) are wired in parallel with the outputs to monitor the activity: 2 LEDS wired to the Arduino OUTPUT PINS that go to the L293B INPUTS for direction, and 1 LED from the Arduino OUTPUT PIN that goes to the ENABLE PINS in the L293B, these ones the PWM for speed control.

Is there something else about analogWrite() I don't know?