but I'm still quite slow, especially when there are a lot of 16th notes and syncopation.
That's natural. In my experience, it is better to train separately for sight reading and for speed of execution. The primary goal must be continuity of execution and respect of relative duration of notes.
The basic tool to improve this aspect of sight-reading (and it is not limited to music), is to be able to group information in your head in larger and larger patterns. The number of patterns that you can hold in your working memory is not much larger, but the information content and the speed at which you can see ahead are greatly expanded.
When you learn to read in the latin alphabet (but something similar happens for kanjis), you first look at words as heaps of letters, each needing to be deciphered, then gradually are able to recognize specific syllables or small words quickly and consider them as units, then almost any word is a unit, then word groups, quickly scanning punctuation. When you learn to speak in public, be an actor, you develop a sense for learning whole verses and sentences, then whole speeches.
So be warned that sight-reading is partly specific to a given musical style (as it would be for a given language) and can be enhanced by good musical typography. That's one of the challenge of contemporary music. Almost every composer has his/her musical idiom.
Most teachers agree on what kind of activity develop sight-reading abilities, I give you two types of exercices that I find very useful:
Train to quickly memorize a whole bar: glance at it, try to play or sing what you remember of it slowly while looking away (but do not look at your fingers or at your instrument), skip one or two bars, do it again. Do that with pieces and studies much simpler than your current playing level. Try to describe/classify each bar in a personal language : "this is all repeated notes", "this is the same that two bars before", "Oh, I know that rhythm, that bowing", "This is a scale fragment", etc. Then make a short break and try to play the whole piece from the start, slowly again and enjoy a certain sense of familiarity.
Develop peripheral, structural vision, prepare for awareness of the score while playing. Try to be aware of your surroundings, of the color and shape of things surrounding the score while playing it, try to be a little farther from the score than you use to be. Look at a score before trying to sight-read it (always aiming at a difficulty level lower than the difficulty level of works you train for and memorize). Choose one or two target bars, thinking something like "I will recognize you when your time comes". Try to make for yourself a map of the score : rhythm and volume changes, repetitions, places where you will have to use the G string, pizzicati, double stops, fifth intervals, etc. places where the page and staff layout is awkward in relation to the music. When you play the piece, try to recall and enhance these deductions. Do not use this awareness to play faster : use it to play better, more in tune, strict rythm, better respect of expressive indications, better placement of hands and body.