Multiplication won't return a larger type than the two operands unless you specifically tell it to. The operation will convert all variables to the largest width and then multiply. When you multiply a 16 bit int by an 8 bit int, the 8 bit int will be converted to a 16 bit int, and then the two will be multiplied. Although mathematically the result can be larger than 16 bits, the operation will only return a 16 bit number. If the result cannot fit in 16 bits of space, then an overflow flag will be set (check your microcontroller manual to see how to check that).
In your case, the operation will return 4000, which can be stored in a 16 bit variable, so that is fine.