diff --git a/src/loaders/it_load.c b/src/loaders/it_load.c
index 1009557..29736d7 100644
--- a/contrib/libxmp/src/loaders/it_load.c
+++ b/contrib/libxmp/src/loaders/it_load.c
@@ -782,6 +782,7 @@ static int load_it_sample(struct module_data *m, int i, int start,
 
 	if (sample_mode) {
 		/* Create an instrument for each sample */
+		mod->xxi[i].vol = 64;
 		mod->xxi[i].sub[0].vol = ish.vol;
 		mod->xxi[i].sub[0].pan = 0x80;
 		mod->xxi[i].sub[0].sid = i;
@@ -813,8 +814,8 @@ static int load_it_sample(struct module_data *m, int i, int start,
 			if (sub->sid == i) {
 				sub->vol = ish.vol;
 				sub->gvl = ish.gvl;
-				sub->vra = ish.vis;	/* sample to sub-instrument vibrato */
-				sub->vde = ish.vid >> 1;
+				sub->vra = ish.vis + 1;	/* sample to sub-instrument vibrato */
+				sub->vde = ish.vid << 1;
 				sub->vwf = ish.vit;
 				sub->vsw = (0xff - ish.vir) >> 1;
 
@@ -1117,7 +1118,7 @@ static int it_load(struct module_data *m, HIO_HANDLE *f, const int start)
 		m->period_type = PERIOD_LINEAR;
 	}
 
-	if (!sample_mode && ifh.cmwt >= 0x200) {
+	if (sample_mode || ifh.cmwt >= 0x200) {
 		m->quirk |= QUIRK_INSVOL;
 	}
 
