Really simple C++ Arduino Question

Job ID: 35700441

Budget: $10 – $30 CAD

I am trying to send a signed 8 bit integer (int8_t) over hardware serial from 1 Arduino to another.
Arduino # 1
void ... {
int8_t X = some number between -127 and +127;
Serial1.write(X);
}
Arduino #2
Void ... {
int8_t X = 0;
X = (int8_t)Serial.read();
}
When I send the singed integer over serial it gets implicitly converted to a 8 bit unsinged integer. Once it gets back to the other Arduino I try to convert it back by casting it to a singed 8 bit integer. Positive values work however negative values end up as large positive values. For example negative 1 ends up as positive 255. I need to know how to fix this and it has to be done efficiently preferably within microseconds.