The completed grid:
First some easy deductions. R2C4 has to be 19, since the sum of the pink squares is 27. Similar logic shows R5C4 is 21. Now the left two yellow squares must sum to 25, meaning the right two orange squares sum to 28, forcing R1C1 to be 2. The remaining purple squares must sum to 60, forcing the upper black square to be 3, and thus the lower black square is 10. We now know the sum of the lower three blue squares is 26, so the topmost blue square is 24. We can chase sums across the top two rows now: the sum of the top two elements in the second column is 19, the third column is 34, and the fourth is 28. This forces the let pink square to be 9. The grid thus far:
We noted before that the remaining yellow squares sum to 25. Chasing these down the column, we find that the top purple square has to be 20. We know the remaining purple squares sum to 40, so one of the squares must be greater than 20, forcing it to be either 22, 23, or 25. Using 25 in the left purple square forces a duplicate 10 in the bottom blue square, while using 25 in the right purple square forces a 15 in the left purple square, and thus a duplicate 20 in the bottom blue square. So the two remaining purple squares must be either 17 and 23, or 18 and 22.
A bit of case checking:
Once we know the right purple square, we can get the left red square, both yellow and both orange squares by chasing sums up columns. Using 17 in the right purple square forces a duplicate 9 in the left yellow square, 23 forces a duplicate 10 in the right yellow square, and 18 forces a duplicate 10 in the left yellow square. Thus the right purple square must be 22, and we produce some other easy deductions. The grid thus far:
Now we're cooking with gas:
The remaining two blue numbers must sum to 9, and the only remaining possibilities are 1 and 8. This forces the left green to be 16 or 23, but the left two green squares sum to 20, so it must be 16. The rest of the grid is pretty trivially forced.