Use the stdint.h typedefs instead of 'int', it will make life easier when you can see what size types you are using. I would also be aware that an 'int' overflows at 65536 on the avr so watch multiplications even if you think there will be no overflow.
The datasheet gives an example, and uses the correct types-
int8_t sigrow_offset = SIGROW.TEMPSENSE1; // Read signed value from signature row
uint8_t sigrow_gain = SIGROW.TEMPSENSE0; // Read unsigned value from signature row
uint16_t adc_reading = 0; // ADC conversion result with 1.1 V internal reference
uint32_t temp = adc_reading - sigrow_offset;
temp *= sigrow_gain; // Result might overflow 16 bit variable (10bit+8bit)
temp += 0x80; // Add 1/2 to get correct rounding on division below
temp >>= 8; // Divide result to get Kelvin
uint16_t temperature_in_K = temp;
With the adc_reading line obviously incomplete, so replace to get ADC0.RES/64.