diff --git a/src/engine.h b/src/engine.h
index d61769034fd6d72d49e729f52b9f01e2f90a653b..3ee8bcf06e7f94e7bb1c786c79fbbf88e6f97bc0 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -191,6 +191,9 @@ struct engine {
 
   /* The internal system of units */
   const struct unit_system *internal_units;
+  
+  /* The STF system of units */
+  struct unit_system *stf_units;
 
   /* Snapshot information */
   double timeFirstSnapshot;
diff --git a/src/velociraptor_interface.c b/src/velociraptor_interface.c
index bbbcf484137445f2320162f8407081f62c1ba273..f2734130f9c073c51c348a8ae886a286ff129156 100644
--- a/src/velociraptor_interface.c
+++ b/src/velociraptor_interface.c
@@ -48,12 +48,11 @@ void velociraptor_init(struct engine *e) {
     struct unitinfo unit_info;
     struct siminfo sim_info;
     
-    struct unit_system vel_us;
     struct phys_const vel_const;
 
     /* Initialize velociraptor unit system and constants */
-    units_init(&vel_us, e->parameter_file, "VelociraptorUnitSystem");
-    phys_const_init(&vel_us, e->parameter_file, &vel_const);
+    units_init(e->stf_units, e->parameter_file, "VelociraptorUnitSystem");
+    phys_const_init(e->stf_units, e->parameter_file, &vel_const);
 
     /* Set cosmological constants. */
     cosmo_info.atime = e->cosmology->a;
@@ -73,10 +72,10 @@ void velociraptor_init(struct engine *e) {
     message("w_de: %e", cosmo_info.w_de);
 
     /* Set unit conversions. */
-    unit_info.lengthtokpc = units_conversion_factor(e->internal_units, &vel_us, UNIT_CONV_LENGTH); /* 1kpc <=> 3.086e21cm */
-    unit_info.velocitytokms = units_conversion_factor(e->internal_units, &vel_us, UNIT_CONV_SPEED); /* 1km/s <=> 1e5cm/s */
-    unit_info.masstosolarmass = units_conversion_factor(e->internal_units, &vel_us, UNIT_CONV_MASS); /* 1M_sol <=> 1.99e33g */
-    unit_info.energyperunitmass = units_conversion_factor(e->internal_units, &vel_us, UNIT_CONV_ENERGY_PER_UNIT_MASS); /* Conversion for gravitational potential. */
+    unit_info.lengthtokpc = units_conversion_factor(e->internal_units, e->stf_units, UNIT_CONV_LENGTH); /* 1kpc <=> 3.086e21cm */
+    unit_info.velocitytokms = units_conversion_factor(e->internal_units, e->stf_units, UNIT_CONV_SPEED); /* 1km/s <=> 1e5cm/s */
+    unit_info.masstosolarmass = units_conversion_factor(e->internal_units, e->stf_units, UNIT_CONV_MASS); /* 1M_sol <=> 1.99e33g */
+    unit_info.energyperunitmass = units_conversion_factor(e->internal_units, e->stf_units, UNIT_CONV_ENERGY_PER_UNIT_MASS); /* Conversion for gravitational potential. */
     unit_info.gravity = vel_const.const_newton_G; /* TODO: G = 6.67408e-8 (cgs) */
     unit_info.hubbleunit = e->cosmology->H; /* TODO: double check this. */
 
@@ -185,7 +184,8 @@ void velociraptor_invoke(struct engine *e) {
                        nr_hydro_parts * sizeof(float)) != 0)
         error("Failed to allocate array of internal energies for VELOCIraptor.");
     
-    for(int i=0; i<nr_hydro_parts; i++) internal_energies[i] = hydro_get_physical_internal_energy(&parts[i], e->cosmology);    
+    const float energy_scale = units_conversion_factor(e->internal_units, e->stf_units, UNIT_CONV_ENERGY); /* Conversion for particle internal energy. */
+    for(int i=0; i<nr_hydro_parts; i++) internal_energies[i] = hydro_get_physical_internal_energy(&parts[i], e->cosmology) * energy_scale;    
 
     message("MPI rank %d sending %lld gparts to VELOCIraptor.", e->nodeID, nr_gparts);